名称。使用变量在VBA中添加

问题描述 投票:0回答:3

如何使用以下变量创建以下非连续命名范围?

ActiveWorkbook.Names.Add Name:="Validation_Range", RefersToR1C1:= _
        "='Holding Template'!R3C1,'Holding Template'!R4C2"

以下是变量:

Dim PM As Range
Dim statement_date As Range

Set PM = ws.Range("A3")
Set statement_date = ws.Range("B4")

如果我使用 1 个变量,它可以工作,但我无法使用多个变量来创建非连续范围。

excel vba variables named-ranges contiguous
3个回答
0
投票

尚不清楚如何获取两个范围来设置变量,但这里有一些使用 Union 方法的速记选项。

Dim pm As Range, statement_date As Range
With Worksheets("Holding Template")
    Union(.Cells(3, 1), .Cells(4, 2)).Name = "Validation_Range"
    'alternate
    'Union(.Range("A3"), .Range("B4")).Name = "Validation_Range"
    'alternate
    'Set pm = .Range("A3")
    'Set statement_date = .Range("B4")
    'Union(pm, statement_date).Name = "Validation_Range"
End With

这些方法中的任何一个都会创建工作簿范围的命名范围,或使用工作簿范围覆盖现有 Validation_Range 命名范围的 RefersTo:


0
投票

手动创建一个您想要的名称,然后看看它是如何组合在一起的。然后编写代码来组装这样的字符串。

这样的东西似乎有效:

Sub test()
    Dim PM As Range, ws As Worksheet
    Dim statement_date As Range

    Set ws = Sheets("Holding Template")
    Set PM = ws.Range("A3")
    Set statement_date = ws.Range("B4")

    ActiveWorkbook.Names.Add Name:="Validation_Range", RefersTo:= _
        "='" & ws.Name & "'!" & PM.Address & ",'" & ws.Name & "'!" & statement_date.Address
End Sub

0
投票

以下是我重命名电子表格中所有标题的方法:

Sub renameheader()
i = 5
For x = 1 To 30
Worksheets("CHECKALL_LIST").Cells(1, i).Name = "Checks_" & x
i = i + 3
Next
End Sub

标题每 3 个单元格合并一次,这就是我需要使用“i”的原因。 希望这有帮助。

© www.soinside.com 2019 - 2024. All rights reserved.