Notifications
Clear all

VBA - Contagem de linhas IF

6 Posts
3 Usuários
0 Reactions
1,385 Visualizações
(@rafapmotta)
Posts: 13
Active Member
Topic starter
 

Galera, bom dia.

Estou precisando de uma ajuda.

Tenho uma planilha que eu coloco dados independentes em cada coluna, como segue o exemplo abaixo:

Colu.A Colu .B Colu.C Colu .D ....
Dado 1 Dado 2 Dado 3 Dado 4
Dado 1 Dado 2 Dado 3 Dado 4
Dado 1 Dado 2 Dado 3 Dado 4
Dado 1 Dado 3
Dado 1 Dado 3
Dado 1 Dado 3

O que eu preciso, é de uma macro que inclua 3 células para baixo (Na vertical),quando a coluna tiver dados somente até a linha 3, como na coluna B e D do exemplo acima. Podem ter mais ou menos colunas do que no exemplo, entao a macro teria que fazer uma varredura até a ultima coluna com dados.

Alguem tem ideia de como fazer isso?

Obrigado desde ja.

 
Postado : 04/02/2016 7:57 am
(@robo8268)
Posts: 73
Trusted Member
 

Eu não entendi a sua dúvida, você quer contar o número de colunas e inserir linhas abaixo?

para contar quantas coluna há na planilha, use:

contagem = Sheets("Plan1").Cells(1, Columns.Count).End(xlToLeft).Column

 
Postado : 04/02/2016 8:24 am
(@rafapmotta)
Posts: 13
Active Member
Topic starter
 

Na verdade o que resolveria o meu problema, seria uma macro que verificasse a linha 4 em cada coluna. Se a linha 4 de uma coluna X fosse vazia, entao a macro incluiria 3 células para baixo na respectiva coluna, caso contrário, ela iria para outra coluna e assim por diante, até a ultima coluna que tenha dados.

Acho que ficou mais claro agora.

 
Postado : 04/02/2016 8:32 am
(@rafapmotta)
Posts: 13
Active Member
Topic starter
 

Tentei fazer do jeito abaixo, mas a macro fica incluindo varias celular para baixo somente na primeira coluna que encontra com a linha 4 vazia.

Range("A4").Activate

Do Until ActiveCell.Value = "."

If ActiveCell.Value = "" Then
ActiveCell.Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove
Else: ActiveCell.Offset(0, 1).Activate
End If

Loop

 
Postado : 04/02/2016 9:34 am
(@mprudencio)
Posts: 2749
Famed Member
 

Disponibilize um arquivo modelo fica mais facil ajudar

Marcelo Prudencio
Microsoft Excel Brasil no Facebook

"Começar já é a metade do caminho."
Autor Desconhecido

Simplifica que simples fica.
Nicole Tomazella.

"O Simples é Sempre Melhor Que o Complicado"
Jorge Paulo Lemann.

 
Postado : 04/02/2016 10:33 am
(@robo8268)
Posts: 73
Trusted Member
 

Ve se é isso...

Sub incluir()
Dim numeroDeLinhas As Integer
Dim numeroDeColunas As Integer
Dim linha As Integer
Dim coluna As Integer
Dim intervalo As Range

numeroDeLinhas = ActiveSheet.Range("A1").CurrentRegion.Rows.Count
numeroDeColunas = ActiveSheet.Range("A1").CurrentRegion.Columns.Count



For coluna = 1 To numeroDeColunas
For linha = 4 To numeroDeLinhas Step 4
     If Cells(linha, coluna) = "" Then
        Set intervalo = Range(Cells(linha, coluna), Cells(Rows.Count, coluna).End(xlUp).Row)
        Range(Cells(linha, coluna), Cells(Rows.Count, coluna).End(xlUp).Row).Value = ""
        intervalo.Copy
        Range(Cells(linha, coluna), Cells(Rows.Count, coluna).End(xlUp).Row).Offset(3).PasteSpecial xlPasteAll
     End If
Next linha
Next coluna
End Sub
 
Postado : 04/02/2016 10:51 am