Задайте массив с переменным именем VBA

Вопрос: Я пытаюсь использовать VBA для установки массива на основе значения ячейки в моей книге. У меня есть набор массивов на мои данные под названием THREEMO. В этом месяце значение равно Aug. Я хочу добавить лист с именем Aug, а затем установить массив для столбцов B: C и называть их Aug. Я смог добавить лист

Вопрос:

Я пытаюсь использовать VBA для установки массива на основе значения ячейки в моей книге. У меня есть набор массивов на мои данные под названием THREEMO. В этом месяце значение равно Aug. Я хочу добавить лист с именем Aug, а затем установить массив для столбцов B: C и называть их Aug. Я смог добавить лист и назвать его, но массив не позволяет мне использовать переменную, чтобы назвать массив. Вот что я имею до сих пор:

Dim WS As Worksheet Set WS = Sheets.Add(After:=Sheets(Worksheets.Count)) WS.Name = Range(«THREEMO») Dim stNewTab As String stNewTab = Range(«THREEMO») ‘Set Arrays Columns(«B:C»).Select ActiveWorkbook.Names.Add Name:=Range(«THREEMO»), RefersToR1C1:=»=Range(«THREEMO»)!C2:C3″

Я получаю сообщение об ошибке в разделе “Set Arrays”. Это то, на что похоже, когда я записываю макрос, так что у меня просто возникают проблемы с настройкой RefersToR1C1 с переменной за месяц:

ActiveWorkbook.Names.Add Name:=»AUG», RefersToR1C1:=»=Aug!C5:C6″ Лучший ответ:

+ Изменить

ActiveWorkbook.Names.Add Name:=Range(«THREEMO»), RefersToR1C1:=»=Range(«THREEMO»)!C2:C3″

в

ActiveWorkbook.Names.Add Name:=stNewTab, _ RefersToR1C1:=»=» & stNewTab & «!C2:C3»

Примечание/Объяснение:

Range(«THREEMO») в кавычках рассматривается как строка. Держите его вне кавычек. Лучше по-прежнему использовать переменную stNewTab

Линия

ActiveWorkbook.Names.Add Name:=»AUG», RefersToR1C1:=»=Aug!C5:C6″

также можно записать в виде

ActiveWorkbook.Names.Add Name:=»AUG», RefersToR1C1:=»=» & «Aug» & «!C5:C6»

Теперь все, что вам нужно сделать, это заменить “Aug” на переменную.

Ответ №1

Другой вариант, вы можете настроить Range следующим образом:

Dim Rng As range Set Rng = WS.Range(«C5:C6»)

И тогда вы можете использовать команду Names.Add немного иначе

ActiveWorkbook.Names.Add Name:=stNewTab, RefersTo:=Rng

Оцените статью
Добавить комментарий