【问题标题】:VBA Worksheet Sub Create Named Range in Another WorksheetVBA工作表子在另一个工作表中创建命名范围
【发布时间】:2017-08-30 08:33:01
【问题描述】:

我有一个私有子需要在另一个工作表中创建命名范围。它需要保留一个工作表函数,因为它是一个Worksheet_Change 子。我已经成功地设置了一个范围变量,该范围变量等于另一张纸上的范围:

Set rng2 = Sheets("Lists").Range(Sheets("Lists").Cells(2, Col), Sheets("Lists").Cells(Unique, Col))

但是,当我将rng2 放入我的代码的其他部分时,它只是指活动表中的正确范围。

这是我尝试过的:

ActiveWorkbook.Names.Add Name:="Level" & Col, RefersTo:= _
    "= " & Sheets("Lists").Range(Sheets("Lists").Cells(2, Col), Sheets("Lists").Cells(Unique, Col)).Address & ""

和:

ActiveWorkbook.Names.Add Name:="Level" & Col, RefersTo:= _
    "=" & rng2.Address & ""

底部函数在作为一个整体存储在工作簿中的模块中时有效,但同样在工作表子中不起作用。 我也在底部尝试中尝试了Sheets("Lists").rng2.Address

【问题讨论】:

    标签: vba excel


    【解决方案1】:

    要让地址包含工作表的名称,您必须设置external 参数:

    rng2.address(external:=True)
    

    【讨论】:

    • 很好,我不知道!希望你不介意我调整了答案的那一部分 ++
    • @CallumDA 如果我看到你的回答,我会在评论中提出这个建议。没问题。 :)
    • 我遇到了一大堆错误。多一点上下文会很有用。
    【解决方案2】:

    您的RefersTo 字符串必须类似于"=Lists!A1"。所以它所缺少的只是对列表工作表的引用。

    试试这样的:

    Dim wsLists As Worksheet
    Set wsLists = ThisWorkbook.Worksheets("Lists")
    
    With wsLists
        Set rng2 = .Range(.Cells(2, Col), .Cells(Unique, Col))
        ThisWorkbook.Names.Add Name:="Level" & Col, RefersTo:="=" & rng2.Address(external:=True)
    End With
    

    【讨论】:

      猜你喜欢
      • 2018-06-14
      • 1970-01-01
      • 2019-03-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-03-26
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多