如何在 Excel VBA 中获取包括工作表名称(而非工作簿名称)在内的范围地址?

如果我有一个 Range 对象--例如,假设它引用了名为 Book1 的工作表上的单元格 A1。 因此,我知道调用 Address() 会得到一个简单的本地引用:$A$1. 我知道还可以调用 Address(External:=True),以获得包含工作簿名称和工作表名称的引用:[Book1]Sheet1!$A$1

我想要得到的是一个包含工作表名称的地址,但不包括书名。 我真的不想调用 Address(External:=True),然后自己用字符串函数去掉工作簿名称。 我是否可以调用范围来获取Sheet1!$A$1

解决办法

我能想到的唯一方法是将工作表名称与单元格引用连接起来,如下所示:

Dim cell As Range
Dim cellAddress As String
Set cell = ThisWorkbook.Worksheets(1).Cells(1, 1)
cellAddress = cell.Parent.Name & "!" & cell.Address(External:=False)

编辑:

将最后一行修改为 :

cellAddress = "'" & cell.Parent.Name & "'!" & cell.Address(External:=False) 

如果您希望工作表名称中出现空格或其他奇怪字符时也能正常工作。

评论(1)

本说得对。我也想不出有什么办法可以做到这一点。我建议采用 Ben 推荐的方法,或者用下面的方法去掉工作簿名称。

Dim cell As Range
Dim address As String
Set cell = Worksheets(1).Cells.Range("A1")
address = cell.address(External:=True)
address = Right(address, Len(address) - InStr(1, address, "]"))
评论(0)

[2009-04-21编辑]

    正如 Micah 指出的那样,只有当你命名了那个

评论(2)