在如何在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
发表评论