在如何在vba中返回单元格Range对象的地址?一文中我们介绍了如何返回单元格的地址。
相反地,我们也会遇到需要把单元格地址转换为单元格Range对象。
vba中提供了Application对象的Evaluate方法可以直接把正确的单元格地址转换为单元格Range对象。
代码如下:
Sub QQ1722187970()
Const xlA1 = 1
Const xlR1C1 = -4150
Dim oRng As Range
Set oRng = Excel.ActiveSheet.Range("a1:b4")
With oRng
'获取单元格的地址
sAddress = .Address(False, False, , False)
Dim oRng1 As Range
'将单元格地址转换为单元格对象
Set oRng1 = Excel.Application.Evaluate(sAddress)
End With
End Sub
当单元格地址是不含外部引用时,比如A1:B4,当用Application对象的Evaluate方法转换为单元格Range对象时,表示的是当前工作簿的当前工作表的单元格区域。
如果打开了多个工作簿,需要正确地将地址转换为具体的单元格Range对象时,需要将单元格地址转换为含外部引用的单元格地址,代码如下:
Sub QQ1722187970()
Const xlA1 = 1
Const xlR1C1 = -4150
Dim oRng As Range
Set oRng = Excel.ActiveSheet.Range("a1:b4")
With oRng
'获取单元格的外部引用地址 [test.xlsx]sheet1!a1:b3
sAddress = .Address(False, False, , True)
Dim oRng1 As Range
'将单元格地址转换为单元格对象
Set oRng1 = Excel.Application.Evaluate(sAddress)
End With
End Sub


发表评论