在工作表的左側邊,我們可以看到每一行的行號,在工作表的上方,我們可以看到代表每一列的列字母,因此在工作表中,我們可以很容易知道當前活動單元格處在哪一行哪一列,或者當前活動單元格處在某單元格區域的位置。然而,在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屬性可以返回單元格所在行的行號,或者單元格區域中第一行所在的行號??纯聪旅娴拇a:
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屬性相似,在此不再哆嗦。