VBA代码大全031:如何在vba中将单元格的文本地址转换为range对象?

如何在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

 

       

发表评论