如果我有一个 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)
如果您希望工作表名称中出现空格或其他奇怪字符时也能正常工作。
[2009-04-21编辑]
正如 Micah 指出的那样,只有当你命名了那个<br>.范围时,这个方法才会起作用; nbsp; /i>;
[/编辑]
我知道这有点晚了,但万一有人在谷歌搜索中发现了这个问题(就像我刚刚做的),你也可以试试下面的方法:
Dim cell as Range
Dim address as String
Set cell = Sheet1.Range("A1")
address = cell.Name
这将返回完整地址,类似于 "=Sheet1!$A$1"。
如果不需要等号,可以使用 Replace 函数将其去掉:
address = Replace(address, "=", "")