Вопрос:
Я пытаюсь использовать 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