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.
#38170
Bom dia colegas!

Tentei gravar uma macro para: " A partir da célula ativa, copiar a fórmula da coluna anterior e colar na célula ativa, alterando apenas os dados da planilha ao colar, repetindo o mesmo procedimento para as 15 linhas inferiores à célula ativa também. "

Por exemplo: Seleciono a célula B1 e rodo a macro, que pega a fórmula da célula A1 (='Planilha 1'!L4) e copia na célula B1, acrescentando "+1" no número da Planilha (='Planilha 2'!L4). O mesmo procedimento se repetiria nas 15 células inferiores da planilha ativa, indo até a célula B16 no caso.

Estou com 2 problemas com essa macro:

1) Quando faço a gravação a referência fica fixa na célula, gostaria que a macro funcionasse baseada na célula em que eu escolhesse como ativa.

2) Não estou conseguindo incluir a variável de acrescentar o +1 na Planilha.

Alguém pode dar uma ajuda por favor?
#38173
Quais são as fórmulas que estão em A2, A3, ... , A16 ?
#38175
Primeiramente obrigado pelo auxílio Osvaldo!

Na verdade todas as fórmulas são apenas para pegar dados de pontos fixos em planilhas diferentes. A única informação que eu gostaria que mudasse era justamente a numeração da planilha. Seguem alguns dados:

A1(='Planilha 1'!L4), preciso que passe para a B1 como(='Planilha 2'!L4).
A2(='Planilha 1'!B5), preciso que passe para a B2 como(='Planilha 2'!B5).
A3(='Planilha 1'!N2), preciso que passe para a B3 como(='Planilha 2'!N2).

Acredito que ao botar a informação de cada campo na macro ela acabaria ficando fixa. Eu precisaria que a macro copiasse a fórmula da célula anterior e alterasse apenas a informação referente a planilha.

Existe essa possibilidade?
#38177
O código abaixo atende aos exemplos que você colocou.
No entanto se houver fórmulas coma máscara diferente de 'Planilha 1'!XX então será preciso ajustar o código.
Código: Selecionar todos
Sub InsereFórmulas()
 Dim k As Range
  For Each k In [B1:B16]
   k.Formula = "='Planilha 2'!" & Right(k.Offset(, -1).Formula, Len(k.Offset(, -1).Formula) - 14)
  Next k
End Sub
#38197
Olá Osvaldo!
A máscara das fórmulas seriam 'Planilha X'!XX.
A fórmula deu certo, mas ficou fixa no espaço de [B1:B16], e com as informações da Planilha 2.
Eu precisa de uma referência variável na área e também no número da planilha.

Por exemplo:

- Quanto a área eu precisava que a macro começasse do lugar em que a célula estivesse selecionada. Caso a célula selecionada fosse K3, ele copiaria as informações da célula J3, acrescentando +1 no número da planilha, e faria o mesmo nas 15 células abaixo da K3.

- Quanto ao número da planilha eu precisava que ele adicionasse +1 no valor da planilha (ou selecionasse a planilha seguinte), pois nem sempre as informações seriam da Planilha 1 para a Planilha 2, poderia ser da Planilha 4 para a Planilha 5.

Imagem

É como se em uma coluna eu tivesse diversos dados da planilha 1, na coluna seguinte eu quisesse buscar diversos dados da planilha 2, na coluna seguinte da planilha 3.

Realmente não sei se possível fazer alguma variável com a informação dos nomes das planilhas, por isso minha dificuldade. :o
#38199
Código: Selecionar todos
Sub InsereFórmulasV2()
 Dim k As Range, i As Long, j As Long
  For Each k In ActiveCell.Resize(15)
   i = InStr(1, k.Offset(, -1).Formula, " ")
   j = InStr(1, k.Offset(, -1).Formula, "!")
   k.Formula = "='Planilha " & Mid(k.Offset(, -1).Formula, i + 1, j - i - 2) + 1 & _
    "'!" & Right(k.Offset(, -1).Formula, Len(k.Offset(, -1).Formula) - j)
  Next k
End Sub
obs. em todos os seus exemplos você tem colocado Planilha X, porém na imagem que você postou os nomes estão como PlanilhaX (sem espaço), isso irá provocar erro nas fórmulas, pois considerei com espaço.
#38216
A macro funcionou em qualquer célula que estivesse ativa, mas ela só fez o procedimento na primeira linha e apareceu a seguinte mensagem de erro:

"Erro em tempo de execução '5': Argumento ou chamada de procedimento inválida"

Ao depurar foi apontado algo nestes campos:
Código: Selecionar todos
k.Formula = "='Planilha " & Mid(k.Offset(, -1).Formula, i + 1, j - i - 2) + 1 & _
    "'!" & Right(k.Offset(, -1).Formula, Len(k.Offset(, -1).Formula) - j)
Já renomeei todas as Planilhas com o espaço e o erro persiste.
#38218
Disponibilize o arquivo com o código instalado. ;)
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