Página 1 de 1

Como alterar referências de planilhas diferentes

Enviado: 28 Out 2018 às 08:18
por rafhajs
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?

Re: Como alterar referências de planilhas diferentes

Enviado: 28 Out 2018 às 10:08
por osvaldomp
Quais são as fórmulas que estão em A2, A3, ... , A16 ?

Como alterar referências de planilhas diferentes

Enviado: 28 Out 2018 às 18:22
por rafhajs
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?

Re: Como alterar referências de planilhas diferentes

Enviado: 28 Out 2018 às 20:55
por osvaldomp
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

Como alterar referências de planilhas diferentes

Enviado: 29 Out 2018 às 20:25
por rafhajs
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

Re: Como alterar referências de planilhas diferentes

Enviado: 29 Out 2018 às 21:46
por osvaldomp
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.

Re: Como alterar referências de planilhas diferentes

Enviado: 30 Out 2018 às 19:17
por rafhajs
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.

Re: Como alterar referências de planilhas diferentes

Enviado: 30 Out 2018 às 21:34
por osvaldomp
Disponibilize o arquivo com o código instalado. ;)

Como alterar referências de planilhas diferentes

Enviado: 31 Out 2018 às 20:22
por rafhajs
Osvaldo,

Foi bobeira minha mesmo!
A planilha tinha linhas mescladas, por isso a macro não funcionava.
Coloquei em linhas simples e a macro funcionou perfeitamente!
Muito obrigado meu amigo!