我需要在vba中解释activecell.offset

时间:2014-03-20 14:14:19

标签: excel-vba vba excel

我在理解一些VBA代码时遇到了一些困难。

我没问题
activecell.offset(1,1).select

但是,我有

的问题
activecell.offset(1,1).range("A1").select 

AND

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

为什么有.range(“A1”)?那里为什么有.columns?我读了一些其他帖子说这些事情没有必要。但是我使用相同的格式编写了一些代码,将.range(“A1”)替换为其他范围并产生了不同的结果。你能解释一下这些东西吗?我的意思是偏移后的.range(“A1”)。我继承了其他试图理解的代码。

3 个答案:

答案 0 :(得分:3)

录制宏时,通常会在Excel中添加的.range(“A1”)部分,即使您只选择一个单元格也是如此。基本上“A1”指的是.activecell.offset位置左上角的单元格。所以,例如,如果您将其更改为:

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

活动单元格将成为距离起始单元格为0行,+ 1列的单元格,然后选择区域1列和3行大小,但此处列A和行3是对activecell.offset的RELATIVE引用位置,而不是引用工作表列A,第1-3行。玩“A1:A3”来看看我的意思。

代码可能更简单,只需说

ActiveCell.Offset(0, 1).Select

这将完全有效,但此代码不允许您选择多个单元格。为此,您需要使用RANGE。

答案 1 :(得分:2)

activecell.offset(1,1).range(“A1”)。select应从活动单元格中选择一个单元格向下一个单元格和右侧一列。

ActiveCell.Offset(0,3).Columns(“A:A”)。EntireColumn.Select应选择活动单元格右侧的第三列。

答案 2 :(得分:0)

这些是正确的代码

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

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