excel - Excel VBA:用于在工作表中设置动态命名范围的循环
问题描述
我需要遍历工作簿中的每个工作表,并在每个工作表中设置动态命名范围,工作表摘要报告除外。我需要用工作表名称和“关闭”来命名范围。
我目前有这个:
Option Explicit
Public Sub DefineNamedRanges()
Dim WSheet As Worksheet
Dim ShtName As Variant
For Each WSheet In Worksheets
ShtName = WSheet.Name
If ShtName <> "Summary Report" Then
WSheet.Names.Add Name:=ShtName & "Close", _
RefersTo:="=OFFSET(ShtName!$A$2,0,0,COUNTA(ShtName!$A$2:$A$1048576),COUNTA(ShtName!$2:$2))"
End If
Next WSheet
End Sub
此代码创建范围并根据需要命名它们。当我打开名称管理器时,范围似乎没有引用任何内容。就像只创建名称,而不是范围本身。
解决方案
如果ShtName
在引号内,则它不再是变量,而是 text ,"ShtName"
正如您的屏幕截图所证明的那样。
移动引号ShtName
外的所有实例并与 . 连接&
。您可能还应该在工作表名称周围添加单引号。
改变
"=OFFSET(ShtName!$A$2,0,0,COUNTA(ShtName!$A$2:$A$1048576),COUNTA(ShtName!$2:$2))"
至
"=OFFSET('" & ShtName & "'!$A$2,0,0,COUNTA('" & ShtName & "'!$A$2:$A$1048576),COUNTA('" & ShtName & "'!$2:$2))"
推荐阅读
- vb.net - 为什么使用更新查询给我不同的结果而不是更新 vb.net 中的数据
- typescript - 为每个元组添加一个字符串
- reactjs - 无法在 Express 和 React 上更新项目
- typescript - 为这个函数定义一个适用于任意长度元组的类型
- shell - 如何查看当前的 shell/sh/bash 状态以了解它是 set -e 还是 set +e?
- python - gpu上的Tensorflow:tf找不到gpu
- laravel - 从刀片调用组件时出现非法字符串偏移“名称”错误
- influxdb - 如何从influxDB中检索最后一次30天的数据
- java - StickyNestedScrollView 中的 ViewPager
- r - 添加 coord_equal() 时,几何图块沿 Y 轴折叠