名称。使用variables添加到VBA中

如何使用以下variables创build以下不连续的命名范围?

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个variables,但是我无法使用多个variables来创build不连续的范围。

目前还不清楚你如何得到两个范围来设置你的variables,但是这里有一些使用联合方法的速记选项。

 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 

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

像手动创build一个名字,然后看看它是如何放在一起。 然后编写代码来组装这样一个string。

像这样的东西似乎工作:

 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 

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

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