Excel VBA:用于在工作表中设置动态命名范围的循环
Excel VBA: Loop for setting dynamic named ranges in worksheets
我需要遍历工作簿中的每个工作表并在每个工作表中设置动态命名范围,工作表摘要报告除外。
我需要使用工作表名称和 "Close".
来命名范围
我目前有这个:
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,0,0,COUNTA(ShtName!$A:$A48576),COUNTA(ShtName!:))"
End If
Next WSheet
End Sub
此代码创建范围并根据需要命名它们。
当我打开名称管理器时,范围似乎没有引用任何内容。
这就像只创建了名称,而不是范围本身。
如果 ShtName
在 引号内,它不再是变量,而是文本 "ShtName"
,如您的屏幕截图所示。
将 ShtName
的所有实例移到 引号之外,并与 &
连接。您可能还应该在 sheet 名称周围添加单引号。
改变
"=OFFSET(ShtName!$A,0,0,COUNTA(ShtName!$A:$A48576),COUNTA(ShtName!:))"
到
"=OFFSET('" & ShtName & "'!$A,0,0,COUNTA('" & ShtName & "'!$A:$A48576),COUNTA('" & ShtName & "'!:))"
我需要遍历工作簿中的每个工作表并在每个工作表中设置动态命名范围,工作表摘要报告除外。 我需要使用工作表名称和 "Close".
来命名范围我目前有这个:
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,0,0,COUNTA(ShtName!$A:$A48576),COUNTA(ShtName!:))"
End If
Next WSheet
End Sub
此代码创建范围并根据需要命名它们。 当我打开名称管理器时,范围似乎没有引用任何内容。 这就像只创建了名称,而不是范围本身。
如果 ShtName
在 引号内,它不再是变量,而是文本 "ShtName"
,如您的屏幕截图所示。
将 ShtName
的所有实例移到 引号之外,并与 &
连接。您可能还应该在 sheet 名称周围添加单引号。
改变
"=OFFSET(ShtName!$A,0,0,COUNTA(ShtName!$A:$A48576),COUNTA(ShtName!:))"
到
"=OFFSET('" & ShtName & "'!$A,0,0,COUNTA('" & ShtName & "'!$A:$A48576),COUNTA('" & ShtName & "'!:))"