在工作表的左侧边,我们可以看到每一行的行号,在工作表的上方,我们可以看到代表每一列的列字母,因此在工作表中,我们可以很容易知道当前活动单元格处在哪一行哪一列,或者当前活动单元格处在某单元格区域的位置。然而,在VBA中,我们如何知道我们所操纵的单元格的位置呢?这就是下面我们将要介绍的内容。
在工作表的左侧边,我们可以看到每一行的行号,在工作表的上方,我们可以看到代表每一列的列字母,因此在工作表中,我们可以很容易知道当前活动单元格处在哪一行哪一列,或者当前活动单元格处在某单元格区域的位置。然而,在VBA中,我们如何知道我们所操纵的单元格的位置呢?这就是下面我们将要介绍的内容。
从Rows属性和Columns属性说起
在看看Excel的那些常用对象中,我们介绍过Rows属性和Columns属性,在VBA中使用这两个属性可以表示整行或整列组成的区域,也可以表示单元格区域中的行或列。举一些例子来说明。
Rows代表工作表中的所有行,因此下面的代码:
Rows.Select
将选择当前工作表中的所有行。
看看下面的两行代码:
Range(“A1:C5”).Rows.Select
Range(“A1:C5”).Select
都会选择当前工作表中的单元格区域A1:C5,似乎第一行代码中的Rows有点多余,但再深入分析,就会发现第一行代码是以单元格区域行为对象的角度来进行操作的,而在很多操作中,这正是我们所需要的,例如我们需要对单元格区域逐行进行操作的情形。
Columns属性的使用与Rows属性相同。
Row属性
使用Row属性可以返回单元格所在行的行号,或者单元格区域中第一行所在的行号。看看下面的代码:
Range(“B2”).Row
返回数值2,表示单元格B2处于工作表第2行。
Range(“C3:E5”).Row
返回数值3,表示单元格区域C3:E5的第一行处于工作表的第3行。
咋一看,你可能会疑惑,这不是很明显吗,从单元格的表示就可以看出单元格B2就在第2行,而单元格区域C3:E5的第一行就在工作表的第3行。但是,计算机不会这么看,所以它不知道,需要你使用代码告诉它。特别是使用变量代表单元格时,更需要这样了。
示例:如下图所示的工作表,将单元格区域A1:C10中偶数行的字体加粗。
代码如下:
Sub testRow()
‘声明单元格对象变量
Dim rngRow As Range
‘遍历单元格区域A1:C10行
For Each rngRow InRange(“A1:C10”).Rows
‘如果是偶数行则将字体加粗
If rngRow.Row Mod 2 = 0 Then
rngRow.Font.Bold = True
End If
Next rngRow
End Sub
Column属性的用法与Row属性相似,在此不再哆嗦。