我要做的是从该范围内的单元格中获取范围名称。我环顾四周,似乎每个人都建议使用.Name或.Name.Name但是当我尝试.Name和.Name.Name似乎都没有工作,因为我得到一个对象/应用程序定义的错误。
我设置了一个电子表格,因此有一些范围,每个范围由一个单元格组成,所有单元格都在同一范围内。我最初只是使用标题单元格的.Value,但这会产生一些问题。我的程序执行各种操作,其中一个是创建一个单独的工作表,在该工作表上只有一个单独范围的数据,并且它的名称与范围名称相同。但是,因为我不能命名一个超过30个字符的表(并且我不能在范围名称中使用空格或除了下划线之外的特殊字符这一事实开始使得在视觉上读取标题单元格所说的内容非常困难)我一直试图将该范围命名为“伞术语”,基本上就像标题单元格是“项目管理某事/某事物(某物)......”我可以将范围命名为ProjMgmt,因为它更短但是它有问题,因为它标题单元格和范围名称的值不相同。如果重要的话,标题单元格是一个合并的单元格,并且已经使用名称管理器手动分配了这些范围名称,并且我正在使用excel 2010
编辑:附带问题:当您使用名称管理器手动添加名称时,它是否将它们添加到workbook.Names或它应该去哪里?看起来像workbook.Names没有填充表单名称以外的任何内容
这是我遇到麻烦的代码。这是一个循环,所以<> OrgName用于进入新范围时
If TempP.Value <> OrgName And TempP.Value <> "" Then
OrgName = TempP.Value
...rest of code that works
我想尝试这样的事情
If TempP.Name <> OrgName And TempP.Value <> "" Then
OrgName = TempP.Name
我还有一个InRange函数,用于确定一个单元格是否在我从其他地方获得的给定范围内,我可以使用
Function InRange(Range1 As Range, Range2 As Range) As Boolean
Dim InterSectRange As Range
Set InterSectRange = Application.Intersect(Range1, Range2)
InRange = Not InterSectRange Is Nothing
Set InterSectRange = Nothing
End Function
答案 0 :(得分:0)
您可以将它与您的InRange功能一起使用......
Dim ThisName As Name
For Each ThisName In ActiveWorkbook.Names
If InRange(TempP, ThisName.RefersToRange) And TempP.Value <> "" Then
Set OrgName = ThisName
End If
Next
ThisName将显示Sheet名称,但ThisName.Name将包含Name Manager中显示的范围名称。所以你只需要更深层次地看到你添加的名字。