【问题标题】:Excel VBA: Loop for setting dynamic named ranges in worksheetsExcel VBA:用于在工作表中设置动态命名范围的循环
【发布时间】:2019-04-04 00:54:54
【问题描述】:

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

我目前有这个:

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移到RefersTo中的引号并与&amp;连接。
  • @BigBen,就像一个魅力,但你为什么删除你的答案?
  • 正在进一步测试它。将取消删除
  • @BigBen,给你。谢谢。

标签: excel vba dynamic named-ranges


【解决方案1】:

如果ShtName 在引号,则它不再是变量,而是文本"ShtName",正如您的屏幕截图所证明的那样。

ShtName 的所有实例移出引号并与&amp; 连接。您可能还应该在工作表名称周围添加单引号。

改变

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-03-21
    • 2018-05-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-11-15
    • 1970-01-01
    相关资源
    最近更新 更多