繁体   English   中英

Excel VBA:用于在工作表中设置动态命名范围的循环

[英]Excel VBA: Loop for setting dynamic named ranges in worksheets

我需要遍历工作簿中的每个工作表,并在每个工作表中设置动态命名范围,工作表摘要报告除外。 我需要使用工作表名称和“关闭”来命名范围。

我目前有这个:

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引号,则它不再是变量,而是文本"ShtName" ,如屏幕截图所示。

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))"

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM