Names.Add 在 VBA 中使用变量
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 个变量,它可以工作,但我无法使用多个变量来创建不连续的范围。
手动创建一个你想要的名字,然后看看它是如何组合在一起的。然后写代码给assemble这样的字符串
类似这样的方法似乎有效:
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
不清楚您是如何获得两个范围来设置变量的,但这里有一些 shorthand 选项使用 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 命名的 RefersTo:范围与工作簿范围。
以下是我重命名电子表格中所有标题的方法:
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" 的原因。希望这有帮助。
如何使用以下变量创建以下非连续命名范围?
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 个变量,它可以工作,但我无法使用多个变量来创建不连续的范围。
手动创建一个你想要的名字,然后看看它是如何组合在一起的。然后写代码给assemble这样的字符串
类似这样的方法似乎有效:
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
不清楚您是如何获得两个范围来设置变量的,但这里有一些 shorthand 选项使用 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 命名的 RefersTo:范围与工作簿范围。
以下是我重命名电子表格中所有标题的方法:
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" 的原因。希望这有帮助。