Ответ зависит от того, какую ошибку вы получите.Может быть 2 вопроса:
1.Рабочая книга не указана
У вас более одной рабочей книги, и Excel ищет неправильную рабочую книгу для вашего листа с именем "Лист1", затем вам нужно указать рабочую книгу.
Workbooks("my-workbook").Worksheets("Sheet1").Range("A1").Value = 20
или, еслиИменно в книге, где выполняется код, лучше использовать
ThisWorkbook.Worksheets("Sheet1").Range("A1").Value = 20
Обратите внимание, что вам следует избегать ActiveWorkbook
, который не очень надежен.
2.Неверное имя листа
Нет листа с именем Sheet1
.Проверьте ваши имена листов.Обратите внимание, что существуют различные способы задания рабочего листа.
Укажите по номеру
Worksheets(1).Range("A1")
При этом используется положение рабочего листа впанель вкладок под рабочими листами.Обратите внимание, что это не очень надежно, поскольку положение можно легко изменить, перемещая вкладки.
Укажите по имени вкладки
Worksheets("Sheet1").Range("A1")
Этоэто, наверное, самый распространенный метод.Рабочий лист указан по имени вкладки.Это более надежно, чем по номеру.
Укажите по имени VBA
Sheet1.Range("A1")
Здесь используется имя листа VBA.Это имя можно изменить только в редакторе VB, оно невидимо для пользователя и никак не связано с именем вкладки.Использование этого гарантирует, что код VBA по-прежнему работает на нужном листе, даже если пользователь изменяет имя вкладки листа.
Так что, если имя вкладки Sheet1
, его имя VBA можетбыть Sheet5
, и он может быть в позиции 3
на панели вкладок.
Используя этот пример…
Worksheets("Sheet1").Range("A1")
Sheet5.Range("A1")
Worksheets(3).Range("A1")
… все 3 обращаются к одному и тому же рабочему листу только под разными именами.Поэтому лучше использовать значимые имена (а не цифры), чтобы не путать.