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.
Por matheusdoexcel
#33841
Boa tarde pessoal!

Estou tentando criar uma macro, mas estou encontrando muitas dificuldades.
Preciso de uma macro que identifique que a célula A3 é <> "" e com isso, arraste as fórmulas de B2 e C2 para B3 e C3. Mas gostaria que isso fosse feito em loop, então seria a macro identificar qual a última célula de A preenchida e arrastar a fórmula para ela.

Alguém sabe como fazer?

Mt obrigado, abraços
Por osvaldomp
#33849
Experimente:
Código: Selecionar todos
Sub ReplicaFórmulas()
 Dim c As Range
  For Each c In Range("A3:A" & Cells(Rows.Count, 1).End(3).Row)
   If c.Value <> "" Then [B2:C2].Copy c.Offset(, 1)
  Next c
End Sub
Por matheusdoexcel
#33873
Osvaldo, muito obrigado pela contribuição, realmente atende o que eu havia colocado, mas me deparei com um problema que eu não havia falado. A planilha conta com cerca de 3000 linhas, todas preenchidas. Essa macro eu rodaria quando fossem incluídas novas linhas somente, o ideal seria que a fórmula identificasse somente essas últimas linhas preenchidas e arrastasse a fórmula somente para elas, para não tem que rodar em todas as 3000 linhas toda vez que fosse atualizar. Tem noção se isso é possível?

Abs
Por osvaldomp
#33892
Este código irá pintar de amarelo a última célula processada e na vez seguinte irá processar somente as células abaixo da célula antes pintada.
Código: Selecionar todos
Sub ReplicaFórmulas()
 Dim c As Range, LR As Long, am As Range, x As Long
  LR = Cells(Rows.Count, 1).End(3).Row
  With Application.FindFormat.Interior
   .Color = vbYellow
  End With
   Set am = [A:A].Cells.Find(What:="", SearchOrder:=xlByRows, _
   SearchDirection:=xlPrevious, SearchFormat:=True)
   If Not am Is Nothing Then
    If am.Row = LR Then Exit Sub
    x = am.Row + 1
   Else: x = 3
   End If
  For Each c In Range(Cells(x, 1), Cells(LR, 1))
   If c.Value <> "" Then [B2:C2].Copy c.Offset(, 1)
   If c.Row = LR Then c.Interior.Color = vbYellow
  Next c
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