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).
Postado : 17/07/2018 11:15 am