Notifications
Clear all

selecionar última linha com uma condição

5 Posts
2 Usuários
0 Reactions
716 Visualizações
(@darwin)
Posts: 2
New Member
Topic starter
 

Pessoal

Via VBA, preciso identificar uma última linha da coluna K se está preenchida com uma data válida. Daí selecionar toda a linha e copiar para outra aba e/ou planilha.

A B C D E F G H I J K L
L3 1231 4315 4316 7 16/10/2015 Cliente1 Equip1 Téc.1 Tec.3 Coordenador1 19/10/2015 Contato 1
L4 1230 4313 4314 9 16/10/2015 Cliente2 Equip2 Téc.2 Tec.4 Coordenador2 20/10/2015 Contato 2
L5 1232 4314 4315 6 16/10/2015 Cliente3 Equip2 Téc.2 Tec.4 Coordenador2 Contato 2

Linha a ser copiada: L4, pois a linha 5 está sem data antes da coluna L (Contato).

Valeu d+

 
Postado : 15/10/2015 8:15 pm
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Bom dia!!

Seria algo assim?

Sub AleVBA_17741()
   Dim lngLastRow As Long, lngRow As Long
   Dim strColumn As String
   
   strColumn = "K"
   With ActiveSheet
      lngLastRow = .Cells(.Rows.Count, strColumn).End(xlUp).Row
      For lngRow = 2 To lngLastRow
         If IsDate(.Cells(lngRow, strColumn).Value) Then
            .Rows(lngRow).Copy Plan2.Range("A1") 'Copia para a guia Plan2
         End If
      Next lngRow
   End With
End Sub

Att

Existem mil maneiras de preparar Neston. Invente a sua!
http://www.youtube.com/ExpressoExcel

 
Postado : 16/10/2015 5:47 am
(@darwin)
Posts: 2
New Member
Topic starter
 

Alexandre,
Fiz um pequeno ajuste e deu erro 424, "O objeto é obrigatório". Veja troquei o nome da quia Plan2 para VARIAVEIS,

Dim lngLastRow As Long, lngRow As Long
Dim strColumn As String

strColumn = "K"
With ActiveSheet
lngLastRow = .Cells(.Rows.Count, strColumn).End(xlUp).Row
For lngRow = 2 To lngLastRow
If IsDate(.Cells(lngRow, strColumn).Value) Then
.Rows(lngRow).Copy VARIAVEIS.Range("A1") 'Copia para a guia VARIAVEIS
End If
Next lngRow
End With
End Sub

Como sou novo em vba, Poderia me ajudar ?

 
Postado : 16/10/2015 1:15 pm
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Boa tarde!!

Troque essa linha:

 .Rows(lngRow).Copy Plan2.Range("A1") 'Copia para a guia Plan2

para:

 .Rows(lngRow).Copy Worksheets("VARIAVEIS").Range("A1") 'Copia para a guia Plan2

Att

Existem mil maneiras de preparar Neston. Invente a sua!
http://www.youtube.com/ExpressoExcel

 
Postado : 16/10/2015 1:54 pm
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Uma pequena alteração na rotina do Alexandre e veja se é isto :

Sub AleVBA_17741()
       Dim lngLastRow As Long, lngRow As Long
       Dim strColumn As String
       
       strColumn = "K"
       With ActiveSheet
          lngLastRow = .Cells(.Rows.Count, strColumn).End(xlUp).Row
          
          For lngRow = 2 To lngLastRow
             If IsDate(.Cells(lngLastRow, strColumn).Value) Then
                .Rows(lngRow).Copy Sheets("VARIAVEIS").Range("A1") 'Copia para a guia VARIAVEIS
                Exit Sub 'Sai da rotina apos condição verdadeira
             End If
             lngLastRow = lngLastRow - 1
          Next lngRow
       End With
    End Sub

Existem mil maneiras de preparar Neston. Invente a sua!
http://www.youtube.com/ExpressoExcel

 
Postado : 16/10/2015 2:00 pm