在Excel工作表中,通过顶部行的字母标识和左侧列的数字标识,我们能够很直观地看出单元格或单元格区域的地址,即通常我们所说的单元格A1、单元格区域A1:B5等。
Excel对象模型也提供了Address属性,让我们通过VBA代码知道单元格或单元格区域的地址。下面,我们举几个简单的代码示例。
代码:
ActiveCell.Address
返回当前工作表中当前单元格的地址。
代码:
Selection.Address
返回当前工作表中所选区域的地址。
代码:
Range(“A1”).CurrentRegion.Address
返回当前工作表中单元格A1所在单元格区域的地址。
代码:
ActiveSheet.UsedRange.Address
返回当前工作表中已使用单元格区域的地址。
上述代码的运行结果如下图所示。
Address属性的语法如下:
Range对象 .Address(RowAbsolute, ColumnAbsolute,ReferenceStyle, External, RelativeTo)
说明:
所有参数均为可选项。
参数RowAbsolute设置为True,则返回的地址行部分为绝对引用。默认值为True。
参数ColumnAbsolute设置为True,则返回的地址的列部分为绝对引用。默认值为True。
参数ReferenceStyle设置返回的地址的引用样式,可以设置为xlA1(A1样式)或xlR1C1(R1C1样式)。默认值为xlA1。
参数External设置为True,返回的地址包含工作簿名和工作表名。设置为False,返回本地地址(即不带工作簿名和工作表名)。默认值为False。
如果参数RowAbsolute和ColumnAbsolute设置为False,参数ReferenceStyle设置为xlR1C1,那么必须将参数RelativeTo设置为相对的起始单元格对象。
下面为我们设置Address属性的参数的示例代码和运行结果:
Sub AddressTest()
MsgBox “不带参数的结果:” &_
ActiveCell.Address & vbCrLf& _
“设置RowAbsolute参数的结果:”& _
ActiveCell.Address(RowAbsolute:=False) & vbCrLf & _
“设置ColumnAbsolute参数的结果:”& _
ActiveCell.Address(ColumnAbsolute:=False)& vbCrLf & _
“前面两个参数均设置的结果:”& _
ActiveCell.Address(RowAbsolute:=False, ColumnAbsolute:=False) &vbCrLf & _
“设置ReferenceStyle参数的结果:”& _
ActiveCell.Address(RowAbsolute:=False,ColumnAbsolute:=False, ReferenceStyle:=xlR1C1,RelativeTo:=Range(“C1”)) & vbCrLf & _
“设置External参数的结果:”& _
ActiveCell.Address(External:=True)
End Sub
代码的示例工作表和运行结果如下图所示: