VBA name manager array - PullRequest
       3

VBA name manager array

0 голосов
/ 02 декабря 2018

Я создал код, который получает пользовательский ввод и выводит массив «2 на n» из ячейки X33.п варьируется.Поэтому я установил код VBA, чтобы выбрать это:

lastCol = Cells(34, Columns.Count).End(xlToLeft).Column
Range(Range("X33"), Cells(34, lastCol)).Select 

Я пытаюсь назначить вышеупомянутый выбранный диапазон в существующий массив Array2 через Name Manager.Когда я пытаюсь записать макрос через менеджер имен, я вынужден использовать

With ActiveWorkbook.Names("Array2")
    .Name = "Array2"
    .RefersToR1C1 = "=Sheet1!R33C24:R34C100"
    .Comment = ""
End With

Я пытался изменить C100 выше на & lastCol, так как последний столбец в выводе может быть любым числом, но записанный кодисправлен и не будет назначать массив для выбранного диапазона, который я хочу.Есть ли способ, которым я могу изменить этот код, чтобы он непосредственно брал диапазон, выбранный в верхнем коде, вместо фиксированного значения.

Я все еще изучаю основы VBA, поскольку я в основном пытаюсь вручную редактировать с помощью записи.Спасибо и высоко ценится.

Ответы [ 2 ]

0 голосов
/ 02 декабря 2018
Range(Range("X33"), Cells(34, lastCol)).Name = "Array2"
0 голосов
/ 02 декабря 2018
dim lastCol as long

lastCol = Cells(34, Columns.Count).End(xlToLeft).Column

With ActiveWorkbook.Names("Array2")
    .Name = "Array2"
    'written directly
    .RefersToR1C1 = "=Sheet1!R33C24:R34C" & lastCol
    'or from the selected cells
    .RefersToR1C1 = selection.address(1, 1, ReferenceStyle:=xlr1c1, external:=true)
    .Comment = ""
End With
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...