工作表Address()
功能正是这样做的。由于无法通过 获得Application.WorksheetFunction
,因此我想出了使用该Evaluate()
方法的解决方案。
这个解决方案让 Excel 处理工作表名称中的空格和其他有趣的字符,这比以前的答案有一个很好的优势。
例子:
Evaluate("ADDRESS(" & rng.Row & "," & rng.Column & ",1,1,""" & _
rng.Worksheet.Name & """)")
准确返回“Sheet1!$A$1”,其中一个Range
对象命名rng
为 Sheet1 工作表中的 A1 单元格。
此解决方案仅返回范围的第一个单元格的地址,而不是整个范围的地址(“Sheet1!$A$1”与“Sheet1!$A$1:$B$2”)。所以我在自定义函数中使用它:
Public Function AddressEx(rng As Range) As String
Dim strTmp As String
strTmp = Evaluate("ADDRESS(" & rng.Row & "," & _
rng.Column & ",1,1,""" & rng.Worksheet.Name & """)")
If (rng.Count > 1) Then
strTmp = strTmp & ":" & rng.Cells(rng.Count) _
.Address(RowAbsolute:=True, ColumnAbsolute:=True)
End If
AddressEx = strTmp
End Function
Address() 工作表函数的完整文档可在 Office 网站上找到:https: //support.office.com/en-us/article/ADDRESS-function-D0C26C0D-3991-446B-8DE4-AB46431D4F89