我将以下简单函数插入到电子表格的模块中:
Function CellName(cel As Range) As Variant
Dim nm As Name
For Each nm In Names
If nm.RefersTo = "=" & cel.Parent.Name & "!" & cel.Address Then
CellName = nm.Name
Exit Function
End If
Next
CellName = CVErr(xlErrNA)
End Function
我只想用相邻列中单元格的命名变量填充一列。
奇怪的是,这个函数在一些单元格中有效,但在其他单元格中它会引发 #N/A 错误。在确实有名称的单元格中。
谁能帮我理解?我不是 VBA 专家;我确实对这个 Q 做了一些研究,但只找到了比这更复杂的问题的答案。
谢谢。
最佳答案
要在任何地方获取名称,您可以使用以下内容:
Public Function CellName(cel As Range) As Variant
Dim nm As Name, sht As Worksheet
For Each nm In ThisWorkbook.Names
If nm.RefersTo = "=" & cel.Parent.Name & "!" & cel.Address Then
CellName = nm.Name
Exit Function
End If
Next
For Each sht In ThisWorkbook.Worksheets
For Each nm In sht.Names
If nm.RefersTo = "=" & cel.Parent.Name & "!" & cel.Address Then
CellName = nm.Name
Exit Function
End If
Next
Next
'----- skip from here if you only want single-cells
For Each nm In ThisWorkbook.Names
If Not Intersect(Range(nm.RefersTo), cel) Is Nothing Then
CellName = "* " & nm.Name
Exit Function
End If
Next
For Each sht In ThisWorkbook.Worksheets
For Each nm In sht.Names
If Not Intersect(Range(nm.RefersTo), cel) Is Nothing Then
CellName = "* " & nm.Name
Exit Function
End If
Next
Next
'----- skip till here if you only want single-cells
CellName = CVErr(xlErrNA)
End Function
如果没有找到单个引用,第二部分还将显示包含单元格的范围(输出以
"* "
开头(如果不需要,可以删除)关于vba - Excel VBA 函数在某些地方有效,但在其他地方无效,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/40726836/