2016-08-03 55 views
1

我正在编写一个个人宏,它显示有关状态栏上ActiveCell的重要信息,如它所属的表或枢轴表的名称(如果有),什么未格式化值它拥有和这样的。查找给定单元格属于的命名范围

现在我还想显示单元格包含的命名范围的名称。我想我可以通过ActiveWorkbook的一些名称集合进行扫描并使用相交进行测试,但有没有更简单的方法?

+2

如果命名范围只包含ActiveCell,则ActiveCell.Name.Name将返回命名范围。 – 2016-08-03 10:18:23

+0

谢谢托马斯,这很有用,但已经被利用,我猜想在Excel的地址窗口(在左边)。 –

回答

2

最简单的方法是遍历名称。

Function getRangeNames(Target As Range) 
    Dim n As Name 
    Dim s As String 
    For Each n In ThisWorkbook.Names 
     On Error Resume Next 
     If Not Intersect(Target, n.RefersToRange) Is Nothing Then 
      s = s & n.Name & ", " 
     End If 
     On Error GoTo 0 
    Next n 

    getRangeNames = Left(s, Len(s) - 2) 
End Function 
+0

当然是,如果有人可能来,这个问题可能也是相关的? –

+0

@MLind我同意。顺便说一句,我喜欢你的概念。 – 2016-08-03 13:35:26

+0

这是没有什么奇怪的,与个人工作簿中的类模块与Appl_SheetSelectionChange调用一个子程序写状态栏左侧的当前单元格的信息非常类似于Excel 2010将范围总和写入该栏的右侧。也许我可以在这里分享它?这只是两个屏幕的代码。 –

相关问题