在工作表的左侧边,我们可以看到每一行的行号,在工作表的上方,我们可以看到代表每一列的列字母,因此在工作表中,我们可以很容易知道当前活动单元格处在哪一行哪一列,或者当前活动单元格处在某单元格区域的位置。然而,在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中偶数行的字体加粗。

找到单元格所在的行列号——Row属性和Column属性

代码如下:

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属性相似,在此不再哆嗦。

发表回复