Este fórum está sendo desativado

Depois de 9 anos, este fórum será desativado. Mas calma.... estamos migrando para uma comunidade no DISCORD. Junte-se a nós.

ENTRAR PARA DISCORD

Tópicos relacionados a códigos VBA, gravação de macros, etc.
  • Avatar do usuário
Por Alexmanza
Posts
#55365
Bom dia!
como poderia montar esse comando para que realize a inserção de linhas até o final da planilha somente onde apresentar conteúdo.
não consegui montar o while
Sub Macro7()
'
' Macro7 Macro
'

'
Range("A2").Select
Selection.EntireRow.Insert , CopyOrigin:=xlFormatFromLeftOrAbove
Rows("2:2").RowHeight = 3

End Sub

o arquivo segue em anexo
Você não está autorizado a ver ou baixar esse anexo.
#55367
Boas ora a ideia seria adicionar um linha de 2 em 2 e diminuir o tamanho dessa mesma linha certo?

Queria que a macro fizesse isso até ao final da folha ou até que a célula A deixasse de apresentar conteúdo?

Obrigado.
Por Alexmanza
Posts
#55368
Boas ora a ideia seria adicionar um linha de 2 em 2 e diminuir o tamanho dessa mesma linha certo?
Sim isso mesmo, eu vi em tutoriais já montei boa parte da automação, mas enrosquei nessa fase do loop
Queria que a macro fizesse isso até ao final da folha ou até que a célula A deixasse de apresentar conteúdo?
Gostaria que fizesse até o final da célula "A", porque todo mes aumenta pessoas e ai ela já buscaria automaticamente, estava tentado usar correalçao com linha, tipo :linha_fim = Range("J1").End(xlDown).Row

While linha <= linha_fim
mas não consegui terminar a relação para que ela entrasse no loop inserindo as linhas
Avatar do usuário
Por AfonsoMira
Posts Avatar
#55369
Ora veja se com essa macro tem o resultado que pretende:
Código: Selecionar todos
Sub adicona_linha()

Application.ScreenUpdating = False
Application.EnableEvents = False

Dim ultima_linha As Long

Dim i As Long

'desde a linha 2 até a ultima de 2 em 2 linhas
For i = 2 To 10000 Step 2

If Rows(i).RowHeight = 3 Then

'caso a linha já tenha 3 de altura não faz nada

Else

'caso contrário irá formatar a linha

Rows(i).Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove
Rows(i).RowHeight = 3

End If

Next i

MsgBox "Terminou a macro"

Application.ScreenUpdating = True
Application.EnableEvents = True

End Sub
Ela irá fazer até a linha 10000 mas podemos alterar se quiser.

Alguma dúvida é só chamar. :D
Avatar do usuário
Por AfonsoMira
Posts Avatar
#55370
Fiz uma pequena alteração na macro que enviei anteriormente.
Agora em vez de fazer até à linha 10000, faz apenas até a ultima linha preenchida na coluna A.
Código: Selecionar todos
Sub adicona_linha()

Application.ScreenUpdating = False
Application.EnableEvents = False

Dim ultima_linha As Long

inicio:

ultima_linha = Range("A10000").End(xlUp).Row

Dim i As Long

'desde a linha 2 até a ultima de 2 em 2 linhas
For i = 2 To ultima_linha + 2 Step 2

If Rows(i).RowHeight = 3 Then

'caso a linha já tenha 3 de altura não faz nada

Else

'caso contrário irá formatar a linha

Rows(i).Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove
Rows(i).RowHeight = 3

GoTo inicio

End If

Next i

MsgBox "Terminou a macro"

Application.ScreenUpdating = True
Application.EnableEvents = True

End Sub
long long title how many chars? lets see 123 ok more? yes 60

We have created lots of YouTube videos just so you can achieve [...]

Another post test yes yes yes or no, maybe ni? :-/

The best flat phpBB theme around. Period. Fine craftmanship and [...]

Do you need a super MOD? Well here it is. chew on this

All you need is right here. Content tag, SEO, listing, Pizza and spaghetti [...]

Lasagna on me this time ok? I got plenty of cash

this should be fantastic. but what about links,images, bbcodes etc etc? [...]

Estamos migrando para uma comunidade no Discord