/ / Preciso de interpretação do activecell.offset no vba - excel-vba, vba, excel

Eu preciso interpretação de activecell.offset em vba - excel-vba, vba, excel

Tenho alguma dificuldade em entender algum código VBA. Não tenho problema com

activecell.offset(1,1).select

No entanto, tenho problemas com

activecell.offset(1,1).range("A1").select

AND

ActiveCell.Offset(0, 3).Columns("A:A").EntireColumn.Select

Por que existe um.intervalo ("A1") lá? Por que há colunas. Li outro post dizendo que essas coisas não são necessárias. Mas eu escrevi algum código usando o mesmo formato, substituindo .range ("A1") por outro intervalo e produzi resultados diferentes. Você poderia me explicar essas coisas? Quero dizer o intervalo ("A1") após o deslocamento. Eu herdei o código de outra pessoa tentando entender.

Respostas:

3 para resposta № 1

O .parte do intervalo ("A1") que você costuma adicionar adicionada pelo Excel ao gravar uma macro, mesmo se você selecionar apenas uma célula. Essencialmente "A1" refere-se à célula no canto superior esquerdo da posição .activecell.offset. Portanto, se, por exemplo, você alterou isso para:

ActiveCell.Offset(0, 1).Range("A1:A3").Select

A célula ativa se tornaria a célula que é 0linhas, coluna +1 na célula inicial e, em seguida, selecione uma coluna da área 1 e 3 linhas, mas aqui as colunas A e as linhas 3 são referências RELATIVAS à posição activecell.offset, em vez de se referir às colunas A da planilha A, linhas 1 -3. Brinque com "A1: A3" para entender o que quero dizer.

O código pode ser mais simples e basta dizer

ActiveCell.Offset(0, 1).Select

o que seria perfeitamente válido, mas esse código não permite que você SELECIONE mais de uma célula. Para fazer isso, você precisa usar o RANGE.


2 para resposta № 2

activecell.offset (1,1) .range ("A1"). select deve selecionar uma célula que esteja uma célula abaixo e uma coluna à direita da célula ativa.

ActiveCell.Offset (0, 3) .Columns ("A: A"). WholeColumn.Select deve selecionar a terceira coluna à direita da célula ativa.


0 para resposta № 3

Este é o código correto

Range("a1").Offset(1, 1).Select

Columns("A:A").EntireColumn.Offset(0, 3).Select