excel - 根据相关的工作表重命名命名区域
问题描述
我正在尝试重命名我的命名区域(~400)以使其工作表名称作为后缀。
我应该如何正确地做到这一点?
我现在有以下代码:
Sub ChangeNamedRegions()
Dim oldRegionName As String
Dim newRegionName As String
For Each ws In ActiveWorkbook.Worksheets
For Each n In ActiveWorkbook.Names
' If Range(n).Formula Like "=" + ws.Name + "*" Then
If Range(n).Worksheet = ws Then
oldRegionName = Range(n).Name
newRegionName = ws.Name + oldRegionName
ActiveWorkbook(oldRegionName).Name = newRegionName
With ActiveWorkbook
.Names(oldRegionName).Delete
End With
End If
Next n
Next ws
End Sub
提前致谢!
更新
区域将工作簿作为其父级,而不是工作表
解决方案
下面将是简单和有效的。
Sub ChangeNamedRegions()
Dim Name As Variant
For Each Name In ActiveWorkbook.Names
If TypeOf Name.Parent Is Worksheet Then
With Name
.Name = .Parent.Name & Split(.Name, "!")(1)
End With
End If
Next
End Sub
一个考虑因素是,如果工作表名称包含名称名称中不可用的字符(例如空格或括号),它将不起作用......
更新的答案
如果您需要使用定义名称所引用的工作表的名称,而不是定义名称的工作表,则可以使用名称的 RefersToRange 属性来获取引用的范围,然后使用该名称的 Worksheet 属性范围。
Sub ChangeNamedRegions()
Dim Name As Name
Dim ReferredToRange As Range
For Each Name In ActiveWorkbook.Names
On Error Resume Next
Set ReferredToRange = Name.RefersToRange
On Error GoTo 0
If Not ReferredToRange Is Nothing Then
Name.Name = ReferredToRange.Worksheet.Name & Name.Name
End If
Set ReferredToRange = Nothing
Next
End Sub
推荐阅读
- python - 日期转换为
而不是 datetime.datetime - python - 如何在 Python 中调整图像数组的大小
- python - 拟合管道时 Pyspark ML 管道错误
- html - 我的 css 文件不起作用,直到我更改 css 文件的名称
- angular - Angular6:使用innerHTML时显示嵌入页面的图像时出现问题?
- xamarin - 如何获得 Xamarin 帐户?
- twitter-bootstrap - 引导程序无法从 maxcdn ERR_CONNECTION_RESET 加载
- actions-on-google - 如何使用 Google Home App 配置自定义 Google Assistant 设备?
- javascript - 如何存根一系列 HTTP 请求并测试 Web 应用程序的 UI
- c# - 在 DataGridTemplateColumn 中使用 TemplateSelector 时绑定不再起作用