Excel VBA偏移:如何跳到行前面
Excel是最常用的电子表格管理软件。VBA,或应用程序的Visual Basic,更进一步,使您可以很容易地自动化Excel中的任何东西(请参阅本教程为快速进入VBA)。在今天的教程中,我们将向你展示如何使用VBA中的偏移函数,来选择一个单元格或一个单元格范围。你需要对Excel和VBA都有基本的熟悉。
如果你是新手,没问题,你可以尝试我们的课程VBA与Excel。
什么是偏移函数
OffSet()返回单元格的值,该值是您指定的偏移量。这个函数的语法如下:
偏移量(单元格参考,行,列,高度,宽度)
下面是每个参数的含义
- 单元格引用:指单个单元格或单元格范围。
- 行:指定离开给定单元格的行数。如果输入的值是负数,则给定的单元格向左移动。
- 列:指定远离给定单元格的列数。如果value为负,单元格向上移动。
注意,高度和宽度是可选的。它们用于在单元格中指定返回范围的高度和宽度。可以在工作表的任何单元格中插入OffSet()公式,显然,需要偏移的单元格除外。
结合Range()和OffSet()
OffSet属性通常与Range属性一起使用,以指定新的位置。让我们看一下这个例子
范围(B1)。抵消(RowOffSet: = 1, ColumnOffset: = 1)。选择
此代码将选择C2。参数RowOffSet用于从单元格B1移动1行。类似地,参数ColumnOffSet用于从单元格B1移动1列。注意,参数之间必须用逗号分隔。
实现相同结果的一种更简单的方法是使用一种简写方法,如下所示
范围(" A1 ")。(1, 1) .Select抵消。
这里我们只指定了行和列偏移量的数字。VBA将在内部“知道”第一个是行偏移量,而第二个是列偏移量。如果您想更多地研究Range()函数,可以这样做看看我们关于VBA宏的课程。现在,让我们来看更多的例子。
如何指定仅行
可以只指定行而不指定列。你可以这样做。
范围(B1) .Offset (1) .Select
这里我们省略了列参数和它的逗号。这段代码只导致从原始单元格位置向下移动1行。它将选择整个行,而不仅仅是单个单元格。
如何指定仅列
类似地,也可以只指定列而省略行。代码如下所示:
范围(B1)。抵消(,1)。选择
在Excel中,逗号是必需的,以知道只设置了列偏移量。
如何指定负偏移量
你能猜到怎么做吗?这是很简单。这是代码
范围(D2)。抵消(1,1)。选择
这使得选择从起始位置向上移动1行1列。从细胞D2到细胞C1。
如何抵消一系列的细胞
也可以为范围指定多个单元格。假设您想选择或获取单元格范围的偏移量
范围(“B1: D4”)。(1, 1) .Select抵消
这里,我们从B1到D4的细胞范围开始。目标是将这个完整的单元格范围偏移1行和1列。新的单元格范围将从C2到E5。
结合活动单元与偏移量
活动单元格引用当前选定的单元格。让我们来看看几个涉及活性细胞的例子。下面是从当前选定的单元格中向下移动一个单元格的代码
ActiveCell.Offset .Select (1,0)
使用Range()和Offset()组合活动单元
下面的代码除了选择右边的四个单元格外,还选择了一个单元格,这些单元格将被复制/粘贴到另一个位置。
范围(ActiveCell ActiveCell.Offset (0, 4) .Copy
注意,在第一个ActiveCell实例之后有一个逗号,在副本之前有一个双闭括号。现在让我们继续讨论使用偏移功能来获得所需结果的简单程序。
示例1:计算Excel工作表中的行数
Sub CountNumRows() Dim Count1 as Long Count1 = 0 Do Count1 = Count1 + 1 ActiveCell。Offset(1,0). select循环直到IsEmpty(ActiveCell。MsgBox "There are" Count1 "Rows" End Sub
在这个程序中,我们将Count1声明为long类型的变量。Count加1。然后使用OffSet()循环这些行。当遇到空行时,循环终止。变量count1包含总行数。msgbox()显示一个带有总行数的弹出框。
示例2:结合Range和OffSet来填充从1到100的偶数单元格范围。
Sub prog1() Dim Num Num = 0 For Row = 0 To 9 For Col = 0 To 9 Range(" A1 ")。抵消(行,坳)。Value = Num Num = Num + 2 Next Col下一行结束子行
在这个程序中,A1是给定的单元格,合成的范围是从A1到J10。变量Num初始化为0,并在每次循环中递增值2。由此产生的单元格范围包括从1到100的每一个不重复的偶数。
希望您发现偏移函数有用,现在可以在自己的程序中使用它。我们只谈到了冰山的一角。还有很多。你可以查看更多细节这个终极VBA课程如果你愿意的话现在切换到高级宏,我们刚刚找到Excel先生!