Olá,
Na tabela, quando insiro em alguma célula o valor =A1, por exemplo, sempre que eu mudo o A1 de posição o código da outra célula também é alterado para a nova posição de A1. Ok, todo mundo sabe, referência dinâmica... Porém, as referências a A1 no código-fonte VBA não são mudadas. Existe código dinâmico também?
Grato!
Wilker12
Só uma informação, referência dinâmica é uma coisa é tabela dinâmica é outra.
Tabela dinâmica é uma ferramenta do Excel, pesquise no Google que verá como funciona.
[]s
Existem mil maneiras de preparar Neston. Invente a sua!
http://www.youtube.com/ExpressoExcel
Vlw, Patropi. Não solucionou a questão mas me trouxe uma boa informação! Até editei o post.
ActiveCell refere-se à célula que está selecionada no momento:
Option Explicit Function MinhaFuncao(ByVal celula As String) MsgBox Range(celula).FormulaLocal End Function Sub teste() MinhaFuncao (activecell.address) End Sub
Outra forma seria perguntar onde está a célula:
Option Explicit Function MinhaFuncao(ByVal celula As String) MsgBox Range(celula).FormulaLocal End Function Sub teste() dim cel as string cel = inputbox("Informe a célula") MinhaFuncao (cel) End Sub
Boa tarde, Wilker
Não, da forma como vc imagina não é possível. O código no VBA é simplesmente um texto puro que só passa a fazer algo ou retornar algum valor após ser compilado e então executado, portanto ele não pode (e nem deve) ficar alterando conforme as células são movimentadas nas planilhas.
Entretanto, se o intervalo (Range) ou outros objetos como as tabelas (ListObject) ou tabelas dinâmicas (PivotTables) etc. estiver nomeadas o intervalo usado no VBA refletirá corretamente qualquer atualização/movimentação que houver na planilha.
Então, ao invés de uma referência assim: Worksheets("Plan2").Range("B5:D32") poderia usar Range("MeuIntervaloNomeado") caso B5:D32 esteja nomeado lá no Excel.
Outros artifícios que também podem ser usados para prevenir problemas desse tipo são: usar o método Find para localizar uma palavra chave que vc tenha certeza que está em seu intervalo de interesse para retornar a célula; usar a propriedade CurrentRegion para pegar a região em torno de uma célula conhecida; usar as propriedades Offset para obter um intervalo deslocado x linhas/y colunas de um intervalo conhecido; usar referência relativa (estilo L1C1 ao invés de estilo A1); usar ActiveCell quando pertinente; bloquear intervalos e proteger a planilha garantindo que esses intervalos não "saiam do lugar"... dentre outros.
Tudo dependerá do planejamento que vc faz durante a criação de todo seu Worbook (não só do código VBA).
É por aí, Edson. Valeu!!