微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

使用动态名称自动创建命名范围

如何解决使用动态名称自动创建命名范围

我想选择一列中的一系列单元格,使用所选单元格自动创建一个命名范围,将数字合并到名称中,然后对超过 5 列的列执行相同操作。这是我到目前为止所拥有的,但它不起作用:

Sub AddNamesMacro()

Dim startingrow As Integer
startingrow = 1

Dim endingrow As Integer
endingrow = 1000

For i = 0 To 100 Step 4
Worksheets("TTMIS").Range(Cells(startingrow,i + 1),Cells(endingrow,i + 1)).Select


ThisWorkbook.Names.Add Name:="IS_AccountNames_Year" & i,RefersTo:=Selection.Address(External:=True)
Next

End Sub

当我运行它时,对于任何 i,我都会按照我想要的方式获得命名范围;但是,在名称管理器中,由宏产生的每个命名范围对于“值”和“引用”列具有相同的内容。例如,“Refers To”列将显示“[Filename]TTMIS”!$A$1:A$1000,而“Value”列将显示“[Filename]TTMIS”!$A$1:A$1000 而不是列出值

解决方法

根据所有评论:

Sub AddNamesMacro()

    Dim startingrow As Long
    startingrow = 1
    
    Dim endingrow As Long
    endingrow = 1000
    
    Dim rng As Range
    
    Dim i As Long
    For i = 0 To 100 Step 4
        With Worksheets("TTMIS")
            Set rng = .Range(.Cells(startingrow,i + 1),.Cells(endingrow,i + 1))
        End With
        
        ThisWorkbook.Names.Add Name:="IS_AccountNames_Year" & i,RefersTo:= "=" & rng.Address(1,1,xlA1,1)
    Next

End Sub

还有一个建议:

为了在名称管理器中进行更好的排序,我将使用:

Name:="IS_AccountNames_Year" & Format(i,"000")

把所有的数字都变成 3 位。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。