Имена. Добавление в VBA с использованием переменных
Как я могу создать следующий несмежный именованный диапазон, используя следующие переменные?
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 переменную, это работает, но я не могу использовать более одной переменной для создания несмежного диапазона.
3 ответа
Не ясно, как вы получаете два диапазона для установки ваших переменных, но вот некоторые сокращенные варианты, использующие метод 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
Любой из этих методов создает именованный диапазон области рабочей книги или перезаписывает RefersTo: существующего именованного диапазона Validation_Range с областью рабочей книги.
Создайте нужное имя вручную, а затем посмотрите, как оно составляется. Затем напишите код для сборки такой строки.
Нечто подобное похоже на работу:
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 ячейки, поэтому мне нужно было использовать "я". Надеюсь это поможет.