2016-06-09 106 views
1

如何使用以下变量创建以下不连续的命名范围?Names.Add in VBA using variables

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个可变它的工作原理,但我无法使用多个变量来创建非连续范围。

回答

0

目前尚不清楚你是如何得到这两个范围设置您的变量,但这里使用的是Union method的一些快捷选项。

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命名范围的

+0

我想这正是我要找的。 Union函数似乎可以很容易地将变量合并到一个地方。谢谢! –

+0

这部分代码正是我所需要的。再次感谢! 'Union(pm,statement_date).Name =“Validation_Range” –

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个单元合并,这就是为什么我需要使用“我”。希望这可以帮助。