地址函数为单个单元格返回两个“:”

时间:2013-11-18 18:28:41

标签: excel vba excel-vba

我在理解一些奇怪的行为时遇到了一些麻烦。范围类的.address属性以“Cell:Cell”格式返回一个单元格。 (1)和(2)都以“$ A $ 1:$ A $ 1”的形式给出地址,而不仅仅是“$ A $ 1”。下面列出了一段代码:

With Sheet1
        Set r = .Range("MyRange")

        '(1)*
        Debug.Print r.Address 
        r.Formula = "= 1 + 1"

        For i = 1 To 47
            Set r = r.Offset(0, 1)

            'above
            r1 = r.Offset(-1, 0).Address(True, False)

            'above to the left
            r2 = r.Offset(-1, -1).Address(True, False)

            'to the left
            r3 = r.Offset(0, -1).Address(False, False)
            '(2)*
            Debug.Print r.Address & "gets: " & r1 & "+" & r2 & "+" r3
        Next
End With

任何一种情况下的Debug.Print都以以下格式打印:

"$D$10:$D$10 gets: $D$9:$D$9 + $C$8:$C$8 + ... " and so on.

注意: 我不是说(1)和(2)打印相同的东西......它们都按预期打印,只是打印的格式重复两次作为一个单元格的范围。

任何想法都会非常感激 - B

编辑:当我保存并关闭工作簿时,行为会停止并按预期返回打印地址“$ D $ 10获取:...”

1 个答案:

答案 0 :(得分:1)

请尝试以下方法:

Sub dural()
    Dim r As Range
    Set r = Range("A1")
    s = r.Address
    s = s & vbCrLf & r.Address(1, 1)
    s = s & vbCrLf & r.Address(1, 0)
    s = s & vbCrLf & r.Address(0, 1)
    s = s & vbCrLf & r.Address(0, 0)
    MsgBox s
End Sub

你应该看不到冒号。