Разное

Vba сделать лист активным: Метод листа. Activate (Excel) | Microsoft Docs

Содержание

Как активировать конкретный рабочий лист в Excel?

Мне просто нужно активировать определенный рабочий лист. У меня есть строковая переменная, которая хранит имя рабочего листа.

excel

vba

Поделиться

Источник


Alex    

25 октября 2010 в 10:44

3 ответа


  • Как отформатировать рабочий лист Excel?

    Я использую Microsoft.ACE.OleDb для записи данных в excel. Я хочу отформатировать рабочий лист только с помощью Microsoft.ACE.OleDb? Мое требование заключается в том, что я не хочу использовать сторонние библиотеки, такие как Microsoft.InterOp и EPPlus. Как я могу это сделать?

  • Как открыть рабочий лист в vba?

    Забавно, что следующий код работает только в том случае, если рабочий лист действительно выбран в окне excel. Я действительно хочу закончить этот макрос в ближайшее время, но не могу понять, как выбрать конкретный рабочий лист, чтобы он был открыт в excel? Большое спасибо, если кто-то знает, как…



100

Поможет ли вам следующий макрос?

Sub activateSheet(sheetname As String)
'activates sheet of specific name
    Worksheets(sheetname).Activate
End Sub

В основном вы хотите использовать функцию .Activate. Или вы можете использовать функцию .Select следующим образом:

Sub activateSheet(sheetname As String)
'selects sheet of specific name
    Sheets(sheetname).Select
End Sub

Поделиться


Dennis G    

25 октября 2010 в 11:08



5

Я бы рекомендовал вам использовать индекс рабочего листа вместо имени рабочего листа, таким образом, вы также можете перебирать листы «dynamically»

for i=1 to thisworkbook. sheets.count
 sheets(i).activate
'You can add more code 
with activesheet
 'Code...
end with
next i

Это также улучшит производительность.

Поделиться


Moreno    

06 января 2017 в 23:09



0

Альтернативный способ (не динамически) связать текст для активации листа без macros-сделать выбранную строку фактической ссылкой.
Вы можете сделать это, выбрав ячейку, содержащую текст, и нажав CTRL+K, затем выберите опцию/вкладку «место в этом документе» и выберите вкладку, которую вы хотите активировать.
Если вы нажмете на текст (который теперь является ссылкой), настроенный лист станет active/selected.

Поделиться


Daan    

30 ноября 2015 в 15:36


  • Лист Excel 2013 активировать

    У меня есть проблема с активацией листа из пользовательской формы, тот же код отлично работает в Excel 2003 по Excel 2010, не работает с Excel 2013. Вот как просто воспроизвести проблему: У вас есть рабочая книга с 2 листами в ней, называемыми Sheet1 и Sheet2 , скажем, и на Sheet1 2 кнопки: При…

  • Excel VBA активировать рабочий лист

    Мне нужно активировать определенный рабочий лист. Код предназначен для создания рабочих листов с определенным именем. Мне нужно вставить что-то из другого листа во все эти вновь созданные листы. Код, который я использую, приведен ниже. Но мне трудно активировать только что созданный рабочий лист,…


Похожие вопросы:

Как активировать конкретную рабочую книгу и конкретный лист?

Как активировать другую рабочую книгу из текущей? У меня есть текущая рабочая книга с dumb.xls и другим именем рабочей книги, так как Tire.xls.I открыл Tire.xls из dumb.xls, используя…

excel-гиперссылка на другую рабочую книгу и конкретный рабочий лист?

Использование excel 2007. Пытаясь найти лучший способ гиперссылки на другую рабочую книгу, но также и на конкретный рабочий лист в этой рабочей книге? Я просмотрел некоторые предложения, но все они…

Как проверить, существует ли рабочий лист в файле Excel

У меня есть файл Excel, который содержит более 20 листов. Я пишу модуль в Matlab, где мне нужно проверить, присутствует ли конкретный рабочий лист, скажем, ‘SalaryData’, в файле Excel. Я не могу…

Как отформатировать рабочий лист Excel?

Я использую Microsoft.ACE.OleDb для записи данных в excel. Я хочу отформатировать рабочий лист только с помощью Microsoft.ACE.OleDb? Мое требование заключается в том, что я не хочу использовать…

Как открыть рабочий лист в vba?

Забавно, что следующий код работает только в том случае, если рабочий лист действительно выбран в окне excel. Я действительно хочу закончить этот макрос в ближайшее время, но не могу понять, как…

Лист Excel 2013 активировать

У меня есть проблема с активацией листа из пользовательской формы, тот же код отлично работает в Excel 2003 по Excel 2010, не работает с Excel 2013. Вот как просто воспроизвести проблему: У вас есть…

Excel VBA активировать рабочий лист

Мне нужно активировать определенный рабочий лист. Код предназначен для создания рабочих листов с определенным именем. Мне нужно вставить что-то из другого листа во все эти вновь созданные листы….

Как преобразовать конкретный лист файла Excel в XML в Mule?

В Mule я хочу преобразовать файл excel в файл xml, но мой файл Excel имеет 2 листа, и я просто хотел, чтобы 2-й лист файла Excel был преобразован в XML. Возможно ли это ? Как преобразовать…

Как активировать рабочий лист в Excel, где имя вкладки является динамическим

Мне нужно активировать определенный рабочий лист, имя которого постоянно меняется, поэтому я не могу указать его в своем коде. В этом документе всегда есть только один рабочий лист, есть ли способ,…

Как скопировать рабочий лист на другой рабочий лист (не как дополнительный рабочий лист)

Я пытаюсь скопировать рабочий лист из одного файла excel в рабочий лист из другого файла excel. Но проблема в том, что он добавляет его как дополнительный лист, а не наклеивает на существующий лист…

Макрос для копирования листа в Excel c любым количеством копий

Возможности макросов в Excel практически неограниченные. В данном примере покажем в пару кликов можно создать любое количество копий листов используя VBA-макрос.

Как макросом скопировать листы в Excel

Допустим необходимо приготовить планы работ для сотрудников вашего отдела. Иметься шаблон таблицы для заполнения документа плана в виде одного рабочего листа Excel:

Но вам необходимо создать 12 планов и соответственно 12 листов. В программе Excel нет встроенного инструмента для многократного создания копий рабочих листов за одну операцию. А копировать и вставлять 12 (а в практике встречаются случаи что и 120) листов вручную, да еще их все нужно переименовать – это потребует много рабочего времени и пользовательских сил. Определенно лучше в таком случае воспользоваться собственным макросом. А чтобы его написать воспользуйтесь VBA-кодом, который будет представлен ниже в данной статье.

Сначала откройте редактор макросов Visual Basic:

Создайте в нем стандартный модуль с помощью опций меню: «Insert»-«Module» и введите в него этот код, который ниже представленный на листинге:

Sub CopyList()
  Dim kolvo As Variant
  Dim i As Long
  Dim list As Worksheet
kolvo = InputBox("Укажите необходимое количество копий для данного листа")
If kolvo = "" Then Exit Sub
If IsNumeric(kolvo) Then
kolvo = Fix(kolvo)
Set list = ActiveSheet
For i = 1 To kolvo
list.Copy after:=ActiveSheet
ActiveSheet.Name = list. Name & i
Next
Else
MsgBox "Неправильно указано количество"
End If
End Sub

Теперь если нам нужно скопировать 12 (или любое другое количество) раз листов содержащие шаблон для заполнения плана работы сотрудника, кликните по исходному листу, чтобы сделать его активным и выберите инструмент: «РАЗРАБОТЧИК»-«Код»-«Макросы»-«CopyList»-«Выполнить». Сразу после запуска макроса появиться диалоговое окно, в котором следует указать количество копий листа:

Введите, например, число 12 и нажмите ОК:

Лист с шаблоном плана скопируется 12 раз, а все названия листов будут иметь такое же как название исходного листа только со своим порядковым номером от 1 до12.

Внимание! Если название исходного листа слишком длинное, тогда может возникнуть ошибка в процессе выполнения макроса. Ведь в Excel название листа не может содержать более чем 31 символ. То есть ориентируйтесь так чтобы название исходного листа было меньше чем 27 символов. Так же ошибка может возникнуть если текущая рабочая книга Excel уже содержит листы с таким названием как у копий. Ведь в Excel все листы должны иметь уникальные названия.

Примечание. В новых версиях Excel (начиная от 2010 версии) одна рабочая книга может содержать максимальное количество листов, которое ограничивается лишь размером свободной оперативной памяти системы.



Описание кода макроса для копирования листов Excel

В коде используются 3 переменные:

  1. kolvo – в этой переменной определено какое количество копий будет создано при копировании текущего рабочего листа Excel.
  2. i – счетчик циклов.
  3. list – в этой переменной будет создан экземпляр объекта листа Excel.

В начале макроса вызываем диалоговое окно, в котором пользователь должен указать в поле ввода какое количество копий листов необходимо создать с помощью данного макроса «CopyList». Введенное числовое значение в поле ввода из этого диалогового окна передается в переменную kolvo. Если поле ввода пустое или в диалоговом окне была нажата кнопка отмены «Cancel», тогда дальнейшие инструкции не выполняться и работа макроса прерывается.

В следующей строке кода проверяется: является ли введенное значение в поле ввода – числовым? Если да, тогда на всякий случай удаляются все числа после запятой с помощью функции Fix.

Далее в переменой list создается экземпляр объекта ActiveSheet. После в цикле копируются листы. Количество циклов выполняется ровно столько, сколько пользователь указал в диалоговом окне макроса. В процессе копирования каждый раз изменяется название для новой копии листа. Так как в одной книге не может быть 2 и более листов с одинаковым названием. Уникальные названия для каждой копии создаются за счет присвоения к названию исходного листа число с порядковым номером текущего цикла. При необходимости пользователь может задать свои параметры для присвоения названия копиям листов изменив данную строку кода. Главное придерживаться правила уникальности названий листов.

Примечание. Если нет необходимости настраивать названия для новых листов, тогда данную строку кода можно закомментировать.

‘ActiveSheet.Name = list.Name & i

Читайте также: Макрос для переименования листов Excel при копировании.

В таком случае названия для копий Excel будет присваивать сам. Например, для исходного листа с названием «Лист1» копии будут получать названия: «Лист1 (2)», «Лист1 (3)», «Лист1 (4)» и т.д.

В конце кода выводиться сообщение на тот случай если пользователь неправильно указал числовое значение в поле ввода диалогового окна макроса.

excel — Сделать рабочий лист активным в зависимости от значения в ячейке другого листа

У меня есть следующий макрос, который копирует значения, введенные на листе «Добавить курс», в ячейки на листе «Bloggs, Joe». Как я могу изменить его, чтобы он использовал значение из C3 на листе «Добавить курс» вместо жестко закодированного «Bloggs, Joe»?

Sheets("Add Course"). Select
Range("C4").Select
Selection.Copy
Sheets("Bloggs, Joe").Select
Range("C7").Select
ActiveSheet.Paste

0

Jane

19 Мар 2018 в 14:40

3 ответа

Лучший ответ

Попробуй это:

Sheets("Add Course").Select
Range("C4").Select
Selection.Copy
Sheets(Sheets("Add Course").Range("C3").Value).Select
Range("C7").Select
ActiveSheet.Paste

0

drec4s
19 Мар 2018 в 11:45

Узнайте, как не использовать Select и попробуйте что-то вроде этого:

Worksheets(Worksheets("Add Course").Range("C3").Value).Range("C7").Value = Worksheets("Add Course").Range("C4").Value

2

Shai Rado
19 Мар 2018 в 11:57

Узнайте, как избежать Выберите и сделайте свой код быстрее, эффективнее и лаконичнее.

With WorkSheets("Add Course")
    .Range("C4").Copy WorkSheets(.Range("C3").Value).Range("C7")
End With

3

SJR
19 Мар 2018 в 12:41

49362104

Диспетчер листов Excel

Работа с диспетчером листов

Для запуска диспетчера листов необходимо в меню вкладки VBA-Excel найти кнопку Диспетчеры и выбрать из выпадающего списка команду Диспетчер листов.

Откроется диалоговое окно, в котором будут перечислены все имеющиеся листы активной книги Excel, а также основная информация по ним: номер по порядку, названиетип (лист/диаграмма), видимость (видимый/скрытый/супер скрытый), установлена ли защита листа, количество ячеек содержащие данные.

Для того чтобы выбрать один или несколько листов необходимо нажать по ним левой клавишей мыши. Для выбора большого количества листов удобно пользоваться фильтром

Использование фильтра

С помощью фильтра можно быстро выбрать все листы книги или снять выделение со всех листов. Также можно выбрать только видимые листы, только скрытые листы или супер скрытые (программным методом) листы. Можно выбрать все листы без пароля, чтобы сразу защитить их от изменений или все листы с паролем, для быстрого снятия с них защиты.

На картинке далее более наглядно видна работа фильтра.

Перемещение листов

С помощью кнопок справа от списка листов можно перемещать как один так и несколько листов одновременно.

Одинарная стрелка  перемещает листы вверх на 1 позицию, в то время как двойная стрелка  перемещает их в начало книги. Соответственно одинарная и двойная стрелки с направлением вниз, перемещают листы вниз на 1 позицию или в конец списка соответственно. Кнопка между стрелками  делает выбранный лист активным.

Активировать выбранный лист

Чтобы перейти к любому листу можно дважды кликнуть по соответствующей строке в диспетчере. При этом если лист был скрыт (или супер скрыт), то он автоматически будет переведен в Видимый.

Операции с листами

С выбранными листами можно выполнять различные действия:

 

Как в Excel создать «очень скрытый» лист — Трюки и приемы в Microsoft Excel

Вы, вероятно, уже знаете, как скрыть лист: просто щелкните правой кнопкой мыши на вкладке листа и в контекстном меню выберите Скрыть. И, конечно, так же просто можно снова отобразить лист: щелкните правой кнопкой мыши на вкладке любого листа и в контекстном меню выберите Показать (при этом вы увидите список всех скрытых листов).

Однако вы можете затруднить показ скрытых листов дли случайных пользователей, то есть сделать лист «очень скрытым». Для этот выполните следующее.

  1. Убедитесь в том, что вкладка Разработчик отображается на ленте.
  2. По умолчанию эта вкладка не отображается. Поэтому зайдите в диалоговое окно Параметры Excel (выберите команду Файл ► Параметры), перейдите в раздел Настройка ленты и поставьте флажок Разработчик в списке справа.

  3. Активизируйте лист, который хотите скрыть.
  4. Выберите команду Разработчик ► Элементы управления ► Свойства. В открывшемся диалоговом окне Properties щелкните на поле Visible (рис. 27.1).
  5. Затем щелкните на кнопке с изображением стрелки вниз и выберите значение 2-xlSheetVeryHidden.

Рис. 27.1. Используйте окно Properties, чтобы сделать лист «очень скрытым»

После выполнения этих действий вы не сможете отобразить лист, какую бы команду Excel ни использовали. На самом деле вы не сможете показать лист, даже используя окно Properties, так как это окно показывает свойства активного листа, а пока лист скрыт, его нельзя сделать активным.

Останется ли лист скрытым навсегда? Нет. Чтобы сделать «очень скрытый» лист снова видимым, используйте простой макрос VBA. Макрос, приведенный ниже, позволяет показать Лист2 активной книги (измените название листа на нужное вам):

1
2
3
Sub UnhideSheet()
	Worksheets("Лист2").Visible = True
End Sub

Sub UnhideSheet()
Worksheets(«Лист2»).Visible = True
End Sub

Создание «очень скрытого» листа не относится к мерам безопасности. Любой пользователь, действительно пожелавший узнать, что находится на таких листах, сможет легко это сделать с помощью макросов наподобие представленного выше.

Как избежать использования Select в Excel VBA

Некоторые примеры того, как избежать выбора

Используйте Dimпеременные d

Dim rng as Range

Setпеременная до необходимого диапазона. Есть много способов обратиться к диапазону одной ячейки

Set rng = Range("A1")
Set rng = Cells(1,1)
Set rng = Range("NamedRange")

или многосотовый диапазон

Set rng = Range("A1:B10")
Set rng = Range("A1", "B10")
Set rng = Range(Cells(1,1), Cells(10,2))
Set rng = Range("AnotherNamedRange")
Set rng = Range("A1").Resize(10,2)

Вы можете использовать ярлык для Evaluateметода, но он менее эффективен и его, как правило, следует избегать в рабочем коде.

Set rng = [A1]
Set rng = [A1:B10]

Все приведенные выше примеры относятся к ячейкам на активном листе . Если вы специально не хотите работать только с активным листом, лучше также затемнить Worksheetпеременную.

Dim ws As Worksheet
Set ws = Worksheets("Sheet1")
Set rng = ws.Cells(1,1)
With ws
    Set rng = .Range(.Cells(1,1), .Cells(2,10))
End With

Если вы действительно хотите работать с ActiveSheet, для ясности , что лучше быть явным. Но будьте осторожны, так как некоторые Worksheetметоды меняют активный лист.

Set rng = ActiveSheet.Range("A1")

Опять же, это относится к активной книге . Если вы специально не хотите работать только с ActiveWorkbookили ThisWorkbook, лучше также Dim Workbookпеременную.

Dim wb As Workbook
Set wb = Application.Workbooks("Book1")
Set rng = wb.Worksheets("Sheet1").Range("A1")

Если вы действительно хотите работать с ActiveWorkbook, для ясности , что лучше быть явным. Но будьте осторожны, так как многие WorkBookметоды меняют активную книгу.

Set rng = ActiveWorkbook.Worksheets("Sheet1").Range("A1")

Вы также можете использовать ThisWorkbookобъект для ссылки на книгу, содержащую исполняемый код.

Set rng = ThisWorkbook. Worksheets("Sheet1").Range("A1")

Обычный (плохой) кусок кода — открыть книгу, получить некоторые данные и снова закрыть

Это плохо:

Sub foo()
    Dim v as Variant
    Workbooks("Book1.xlsx").Sheets(1).Range("A1").Clear
    Workbooks.Open("C:\Path\To\SomeClosedBook.xlsx")
    v = ActiveWorkbook.Sheets(1).Range("A1").Value
    Workbooks("SomeAlreadyOpenBook.xlsx").Activate
    ActiveWorkbook.Sheets("SomeSheet").Range("A1").Value = v
    Workbooks(2).Activate
    ActiveWorkbook.Close()
End Sub

И было бы лучше, как:

Sub foo()
    Dim v as Variant
    Dim wb1 as Workbook
    Dim  wb2 as Workbook
    Set wb1 = Workbooks("SomeAlreadyOpenBook.xlsx")
    Set wb2 = Workbooks.Open("C:\Path\To\SomeClosedBook.xlsx")
    v = wb2.Sheets("SomeSheet").Range("A1").Value
    wb1.Sheets("SomeOtherSheet").Range("A1").Value = v
    wb2.Close()
End Sub

Передайте диапазоны своим Subs и Functions как переменные Range

Sub ClearRange(r as Range)
    r.ClearContents
    '....
End Sub

Sub MyMacro()
    Dim rng as Range
    Set rng = ThisWorkbook.Worksheets("SomeSheet").Range("A1:B10")
    ClearRange rng
End Sub

Вы также должны применять методы (такие как Findи Copy) к переменным

Dim rng1 As Range
Dim rng2 As Range
Set rng1 = ThisWorkbook.Worksheets("SomeSheet").Range("A1:A10")
Set rng2 = ThisWorkbook.Worksheets("SomeSheet").Range("B1:B10")
rng1.Copy rng2

Если вы циклически изменяете диапазон ячеек, часто лучше (быстрее) сначала скопировать значения диапазона в вариантный массив и выполнить цикл по нему.

Dim dat As Variant
Dim rng As Range
Dim i As Long

Set rng = ThisWorkbook.Worksheets("SomeSheet").Range("A1:A10000")
dat = rng.Value  ' dat is now array (1 to 10000, 1 to 1)
for i = LBound(dat, 1) to UBound(dat, 1)
    dat(i,1) = dat(i,1) * 10 'or whatever operation you need to perform
next
rng. Value = dat ' put new values back on sheet

Это небольшой дегустатор для того, что возможно.

Сортировка листов книги Excel с помощью процедуры VBA

Работа с процедурами VBA

Работа с процедурами VBA Процедура это последовательность операторов VBA, расположенная в модуле VBA, доступ к которому можно получить с помощью VBE. Модуль может включать любое количество процедур. 1

Подробнее

Сумма по цвету ячеек в Excel

Сумма по цвету ячеек в Excel Как я уже писал ранее, профессиональная работа в Excel рано или поздно приведет вас к необходимости написания собственных функций. Довольно часто пользователи «раскрашивают»

Подробнее

Excel. Создание указателя листов в книге

Excel. Создание указателя листов в книге Один посетитель сайта (Валерий) недавно спросил: «Есть ли инструмент поиска листа в книге по его названию». Возможное решение просто выбрать лист из списка (рис.

Подробнее

Переход на Excel 2001

Содержимое данного руководства Microsoft Внешний вид приложения Microsoft существенно отличается от Excel 2003, и это руководство призвано ускорить знакомство с новой версией программы. Прочитайте данное

Подробнее

ЧАСТЬ I. ВВЕДЕНИЕ В VBA

Содержание Введение 15 Общие сведения о книге 15 Для кого предназначена эта книга 16 Структура книги 16 Условные обозначения 17 От издательства Диалектика 18 ЧАСТЬ I. ВВЕДЕНИЕ В VBA 19 Глава 1. Язык VBA

Подробнее

Общая информация. Лента

Общая информация При планировании выпуска системы 2007 MicrosoftOffice разработчиками была поставлена задача сделать основные приложения MicrosoftOffice удобнее в работе. В результате был создан пользовательский

Подробнее

Лекция 10. Использование макросов в Access

БЕЗОПАСНОСТЬ СИСТЕМ БАЗ ДАННЫХ тема 10 Лекция 10. Использование макросов в Access Макросом называют набор из одной или более команд, выполняющих определенные, часто используемые операции, например, открытие

Подробнее

Совет 1. Изменение оформления Excel

Совет 1. Изменение оформления Excel 25 Совет 1. Изменение оформления Excel Если вы открыли Excel 2013 и сразу захотели что-либо изменить, сделать это несложно. В данном разделе мы обсудим несколько способов,

Подробнее

РАБОТА В MICROSOFT WORD 2010

О.В. Спиридонов РАБОТА В MICROSOFT WORD 2010 Лекция 1. Интерфейс Microsoft Word 2010 Лекция знакомит пользователя с интерфейсом Microsoft Word 2010. Представлены основные элементы интерфейса. Особое внимание

Подробнее

Запуск макроса кнопкой

Запуск макроса кнопкой Это глава из книги Билла Джелена Гуру Excel расширяют горизонты: делайте невозможное с Microsoft Excel. Задача: в предыдущей заметке мы рассказали, как запускать макросы клавиатурными

Подробнее

Сортировка данных сводной таблицы в Excel 2013

Сортировка данных сводной таблицы в Excel 2013 Сортировка данных, находящихся в области строк и столбцов сводной таблицы, по умолчанию выполняется в порядке возрастания (рис. 1а) либо с применением пользовательских

Подробнее

Макросы в сводных таблицах

Макросы в сводных таблицах Макрос представляет собой последовательность действий, которая записана и сохранена для дальнейшего использования. Сохраненный макрос можно воспроизвести по специальной команде.

Подробнее

ЛАБОРАТОРНАЯ РАБОТА 3 РАЗРАБОТКА

ЛАБОРАТОРНАЯ РАБОТА 3 РАЗРАБОТКА 1 Цель занятия Сформировать практические навыки по работе со строками и диалоговыми окнами средствами VBA в приложении Microsoft Word. 2 Общие теоретические сведения 2.1

Подробнее

Работа с макросами в Excel

Работа с макросами в Excel Создание макроса В Excel, так же как и в любом другом пакете Microsoft Office, существует возможность сохранить набор проделанных операций и, в дальнейшем, выполнить его, используя

Подробнее

ВВЕДЕНИЕ В VISUAL BASIC FOR APPLICATIONS

2 ВВЕДЕНИЕ В VISUAL BASIC FOR APPLICATIONS Информатика 2 семестр План лекции 1. Макросы и язык VBA 2. Объектно-ориентированные аспекты VBA 3. Переменные и типы данных 4. Ветвления 5. Циклы 6. Функции 7.

Подробнее

Лента. Рис.1.1. Лента

Лента Главный элемент пользовательского интерфейса Microsoft Word 2007 представляет собой ленту, которая идет вдоль верхней части окна каждого приложения, вместо традиционных меню и панелей инструментов.

Подробнее

Экспорт объектов базы данных.

Экспорт объектов базы данных. Для экспорта информации из объектов БД Источник следует щелкнуть левой кнопкой мышки на узле Экспорт объектов БД в дереве задач Источниками данных могут являться следующие

Подробнее

Процедуры, модули и модули классов

УРОК 7 Процедуры, модули и модули классов Содержание урока Понятие процедуры Работа с модулями Использование модулей классов Создание и выполнение процедур Осталось 30 минут В предыдущих уроках было продемонстрировано,

Подробнее

Методы программирования на VBA

Методы программирования на VBA Настоящая заметка продолжает знакомство с VBA, она иллюстрируют часто используемые приемы VBA, которые можно применять в собственных проектах. 1 Рис. 1. Включение опции Перенос

Подробнее

Виды ошибок при задании формул

Виды ошибок при задании формул Формула в Microsoft Excel представляет собой синтаксическую конструкцию, начинающуюся со знака равенства (=) и предназначенную для обработки данных с последующим помещением

Подробнее

Переход на Access 2010

Содержимое данного руководства Внешний вид приложения Microsoft Access 2010 существенно отличается от Access 2003, и это руководство призвано ускорить знакомство с новой версией программы. Прочитайте данное

Подробнее

Новая таблица ГЛАВА 1

ГЛАВА 1 Новая таблица Для того чтобы начать работу с Microsoft Excel 2007, надо щелкнуть на кнопке Пуск (появится список программ, с которыми пользователь работал в последнее время) и в появившемся меню

Подробнее

О файлах Microsoft Office Word 2007

О файлах Microsoft Office Word 2007 В Microsoft Office 2007 введен новый формат файлов, основанный на языке XML. По умолчанию документы, создаваемые в Word 2007, сохраняются с новым расширением имени файла,

Подробнее

Основы построения диаграмм

Глава 1 Основы построения диаграмм Данные в электронной таблице представлены в виде строк и столбцов. При добавлении диаграммы ценность этих данных можно повысить, выделив связи и тенденции, которые не

Подробнее

Работа с базами данных в MS Excel

Работа с базами данных в MS Excel База данных (или в терминах MS Excel — список) представляет собой упорядоченную информацию, объединенную в единое целое. Строки в базе данных называются записями, а столбцы

Подробнее

Настройка среды Visual Basic Editor

Настройка среды Visual Basic Editor В процессе программирования на VBA в Excel вы будете проводить много времени, работая в окнах VBE. Чтобы сделать редактор более удобным, вам понадобится настройка среды

Подробнее

Описание Программы ViPNet Деловая почта

Описание Программы ViPNet Деловая почта Программа ViPNet Деловая почта (или просто «Деловая почта») предназначена для организации электронного документооборота в защищенной сети ViPNet. С помощью «Деловой

Подробнее

Сортировка и фильтрация списков

Сортировка и фильтрация списков Приложение Excel замечательное средство для работы с числами, однако с его помощью также можно создавать списки и управлять ими. Списки позволяют отслеживать что угодно:

Подробнее

ЛУ

СОГЛАСОВАНО Директор ООО «АЛНАС ПЛЮС» Д.А. Зотов 2005 УТВЕРЖДАЮ Директор ООО «АСТЕХ» А.В. Костин 2005 ПРОГРАММНЫЙ КОМПЛЕКС «AQUILON TEST SYSTEM» Руководство пользователя ЛИСТ УТВЕРЖДЕНИЯ 643. 70894571.00004-01

Подробнее

Создание формы. Практическая работа 3

Практическая работа 3 Создание формы Форма это объект базы данных, который можно использовать для ввода, изменения или отображения данных из таблицы или запроса. Формы могут применяться для управления

Подробнее

Сводные таблицы MS Excel 2010

Сводные таблицы MS Excel 2010 Отчет сводной таблицы представляет собой интерактивный способ быстрого обобщения больших объемов данных. Отчет сводной таблицы используется для подробного анализа числовых

Подробнее

MS Excel (цифровые таблицы)

Электронные таблицы Разнообразие электронных таблиц в приложениях MS Excel (цифровые таблицы) SulSim (вывод данных в Excel) HYSYS (собств. Электр. таблицы) Maple (символьные таблицы) Введение Область применения

Подробнее

Урок 1: Интерфейс Excel * версия 2010 *

Урок 1: Интерфейс Excel * версия 2010 * 1. 0 Введение Данные в Excel располагаются в «ячейках», которые в свою очередь образуют столбцы и строки. Это помогает нам лучше воспринимать эти данные и позволяет

Подробнее

Офайлах Microsoft Office Excel 2007

Офайлах Microsoft Office Excel 2007 В MicrosoftOffice 2007 введен новый формат файлов, основанный на языке XML. По умолчанию документы, создаваемые в Excel 2007, сохраняются с новым расширением имени файла,

Подробнее

Основы программирования на VBA

Основы программирования на VBA Для начала в качестве примера рассмотрим простую процедуру VBA типа Sub. Она хранится в модуле VBA и вычисляет сумму первых ста положительных целых чисел. По окончании вычислений

Подробнее

Лабораторная работа 12

Лабораторная работа 12 Элементы управления, диалоговые окна, используемые при работе с таблицами Цель работы: Научиться разрабатывать элементы управления и диалоговые окна для автоматизации работы с электронными

Подробнее

Получение справки в Microsoft Office 2016

Глава 4 Получение справки в Microsoft Office 2016 В этой главе… Открытие и просмотр окна справки Поиск в окне справки Изменение способа отображения окна справки К аждая следующая версия Microsoft Office

Подробнее

Пользовательский формат числа в Excel

Пользовательский формат числа в Excel Excel предоставляет достаточно много встроенных числовых форматов, однако возможны ситуации, в которых ни один вам не подойдет. В таком случае попробуйте создать собственный

Подробнее

Excel. Проверка данных

Excel. Проверка данных Недавно дочь обратилась с вопросом, нельзя ли в Excel выпадающий в ячейке список сделать контекстным, например, зависящим от содержания ячейки, находящейся слева от ячейки со списком?

Подробнее

Руководство администратора

Руководство администратора Панель администрирования Панель инструментов: ФИО пользователя Карта Меню: Управление Слои Отчеты Хранилища Справочники Выход Панель администрирования Панель администрирования

Подробнее

Подготовка к работе с Excel

ГЛАВА 1 Подготовка к работе с Excel Многие читатели в большей или меньшей степени знакомы с электронными таблицами Excel. Тем не менее необходимо дать определение терминов, наиболее часто встречающихся

Подробнее

VBA ActiveSheet и как активировать или выбрать SheetAutomate Excel

В этой статье рассматривается объект ActiveSheet в VBA. Также будет обсуждаться, как активировать, выбирать и переходить к рабочим листам (и многое другое).

ActiveSheet

В VBA ActiveSheet относится к текущему активному листу. Одновременно может быть активен только один лист.

Активировать рабочий лист (настройка ActiveSheet)

Для настройки ActiveSheet используйте Worksheet.Activate:

Рабочие листы («Ввод»).Активировать

Команда «Активировать лист» фактически «переходит» к листу, изменяя видимый лист.

В приведенном выше примере используется имя листа (вкладка). Вместо этого вы можете использовать кодовое имя VBA для рабочего листа:

Имя ActiveSheet

Чтобы получить имя ActiveSheet:

Выбранные листы против ActiveSheet

В любой момент времени только один лист может быть ActiveSheet. Однако можно выбрать сразу несколько листов.

Когда выбрано несколько листов, активным считается только самый верхний лист (ActiveSheet).

Выбрать рабочий лист

Если вы хотите выбрать рабочий лист вместо его активации. Вместо этого используйте .select.

Выбрать лист по имени вкладки

Это выбирает рабочий лист на основе его имени вкладки листа

Выбрать лист по порядковому номеру

Выбор рабочего листа на основе его положения относительно других вкладок.

Выберите рабочий лист с кодовым именем VBA

Выбор листов по кодовому имени может предотвратить ошибки, вызванные изменением имени листа.

Выбрать текущий рабочий лист

Чтобы выбрать текущий рабочий лист, используйте объект ActiveSheet:

Еще активировать / выбрать примеры листов

Установить ActiveSheet на переменную

Размер ws как лист

Установить ws = ActiveSheet

Изменить имя ActiveSheet

ActiveSheet. Name = «NewName»

с ActiveSheet

Использование With позволяет оптимизировать код при работе с объектами (такими как Sheets или ActiveSheet).

с ActiveSheet

.Name = «StartFresh»

.Cells.Clear

.Range («A1»). Значение = .Name

End With

Обратите внимание, что вам не нужно повторять ActiveSheet перед каждой строкой кода. Это может значительно сэкономить время при работе с длинным списком команд.

Перебрать выбранные листы

Следующий макрос будет перебирать все выбранные листы, отображая их имена.

Sub GetSelectedSheetsName ()

Dim ws As Worksheet

Для каждого ws в ActiveWindow.SelectedSheets

MsgBox ws.Name

Next ws

17 End Sub

Перейти к следующему листу

Этот код перейдет на следующий лист. Если ActiveSheet является последним листом, он перейдет к первому листу в рабочей книге.

Если ActiveSheet.Индекс = Worksheets.Count Then

Worksheets (1) .Activate

Else

ActiveSheet.Next.Activate

End If

Кодирование на VBA стало проще

Прекратить поиск кода VBA в Интернете. Узнайте больше об AutoMacro — конструкторе кода VBA, который позволяет новичкам кодировать процедуры с нуля с минимальными знаниями кодирования и множеством функций, позволяющих сэкономить время для всех пользователей!

Узнать больше!

<< Вернуться к примерам VBA

VBA Активировать рабочий лист в Excel

Когда нам нужно использовать метод Activate Worksheet в VBA?

Мы используем метод Активировать рабочий лист, чтобы активировать текущий лист как активный. Когда мы работаем с несколькими листами в книге, если мы хотим переместить или перейти на другой лист в той же или другой книге, мы используем метод активации рабочего листа.

Метод активации рабочего листа VBA — синтаксис

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

Рабочие листы

(«Имя вашего рабочего листа»). Активируйте
‘или
рабочих листов (« Номер рабочего листа »).Активировать

Где Activate — это метод объекта Workbook, который используется для того, чтобы сделать текущий лист активным.

Рабочий лист активации VBA — с именем: Пример 1

Пожалуйста, ознакомьтесь с приведенными ниже кодами VBA для активации рабочего листа. В этом примере мы активируем рабочий лист с именем «Project1».

Sub Activate_Sheet ()
    Рабочие листы («Проект1»). Активировать
    'Или же
    Таблицы ("Проект1"). Активировать
Конец подписки
 

Метод активации рабочего листа VBA — с номером: Пример 2

См. Приведенный ниже код VBA или макрос-процедуру для активации рабочего листа.В этом примере мы активируем первый рабочий лист в активной книге.


Sub Activate_Sheet_BasedOnIndex ()
    Рабочие листы (1) .Активировать
    'Или же
    Таблицы (1) .Активировать
Конец подписки
 

Объект ActiveSheet VBA

Мы можем ссылаться на активированный в данный момент рабочий лист с помощью объекта Excel VBA ActiveSheet . Объект ActiveSheet VBA очень полезен при автоматизации задач и работе с текущим активным листом в активном окне книги.Если вы проигнорируете объект ActiveSheet при обращении к любому другому объекту, например диапазону или диаграмме, VBA будет рассматривать ActiveSheet как текущий лист по умолчанию. Например: Следующие два оператора макроса будут ссылаться на активный лист.

ActiveSheet.Range ("A1") = "Некоторое значение"
Диапазон ("A1") = "Некоторое значение"
 

, оба приведенных выше оператора печатают некоторое значение в диапазоне A1 Activesheet.

Установить ActiveSheet в Excel VBA

Очень удобно ссылаться на активный лист в Excel VBA, установив переменную.Мы можем назначить и установить ActiveSheet для объекта и ссылаться на него в любом месте процедуры. Вот синтаксис для Установить ActiveSheet в VBA .

Sub sbSetAcitveSheetVBA ()

Dim ws как рабочий лист
Установить ws = ActiveSheet

ws.Range ("A1") = "Некоторая ценность"
Конец подписки
 

Этот код напечатает некоторое значение в диапазоне A1 активной таблицы.

Метод активации рабочего листа VBA — лучший подход

Примечание. Всегда лучше использовать имя рабочего листа, а не номер рабочего листа.Лучше всего назначить рабочий лист объекту, а затем выполнить любую задачу, которую вы хотите выполнить с этим конкретным объектом рабочего листа.

При работе с несколькими рабочими листами вы должны ссылаться на рабочий лист с точным именем рабочего листа, чтобы правильно обновить свои данные в целевом рабочем листе. Создайте объект рабочего листа и при необходимости обратитесь к рабочему листу с объектом.

Давайте посмотрим на другой пример, чтобы понять доступ к рабочим листам с помощью объектов. Вам не нужно активировать рабочий лист, чтобы работать с каким-либо рабочим листом.

Sub sb_Activate_Workbook_Object ()
'Объявляем здесь объекты
    Dim wsMain как рабочий лист, ws_A как рабочий лист
    
'Установите рабочий лист на объект
    Установить wsMain = ThisWorkbook
    Установить ws_A = Рабочие листы («Тест»)

'Теперь займемся своими рабочими листами
    ws_A.Range ("A1") = wsMain.Sheet1.Range ("A1")

Конец подписки
 

Метод активации рабочего листа VBA — инструкции

Следуйте пошаговым инструкциям ниже, чтобы выполнить вышеупомянутые макросы или коды VBA:

  1. Открыть лист Excel
  2. Нажмите Alt + F11: откроется редактор VBA. В противном случае вы можете открыть его на вкладке разработчика
  3. Вставить модуль из меню «Вставить»
  4. Скопируйте приведенный выше код для активации рабочего листа и Вставьте в окно кода (редактор VBA)
  5. Сохранить файл как лист с включенным макросом
  6. Нажмите «F5», чтобы запустить его, или продолжайте нажимать «F8», чтобы отладить код построчно и проверить, как активируется лист.
Связанный ресурс

Вы видели, как активировать рабочие листы с помощью Excel VBA и ссылаясь на AciveSheet.Ниже приведены примеры макросов для активации книги и диапазона Excel.

Разница между методами выбора и активации в VBA

Итог: Узнайте разницу между этими двумя обычно используемыми методами в VBA.

Уровень квалификации: Средний

Выбрать или активировать

Один вопрос, который я часто слышу от новых участников нашего курса VBA Pro: «В чем разница между« Выбрать »и« Активировать »? Похоже, они делают то же самое? »

Короткий ответ заключается в том, что Select and Activate может выполнять одно и то же действие, но с различиями:

  • Select может использоваться для выбора нескольких объектов (листов, диапазонов, фигур и т. Д.) в то же время.
  • Активировать можно использовать для активации одного объекта в выделенной области.

Давайте рассмотрим пример, чтобы увидеть, как это работает.

Какой метод мне использовать?

Во-первых, важно отметить, что оба метода могут использоваться для многих различных типов объектов в Excel. Сюда входят листы, диапазоны, ячейки, фигуры, диаграммы, срезы и т. Д. В этом примере мы будем использовать рабочие листы.

Вариант использования каждого метода зависит от сценария.И, как я объясню ниже, обычно лучше использовать , а не . 😲

Когда использовать метод выбора

Метод Select, как правило, наиболее знаком нам, поскольку средство записи макросов использует его при генерации кода.

Select позволяет выбрать один объект ИЛИ несколько объектов.

Следующая строка кода VBA выбирает один рабочий лист .

Рабочие листы

 ("Лист2"). Выберите 

Мы также можем использовать Select для выбора нескольких объектов .Вот пример выбора нескольких диапазонов.

Диапазон

 ("A1: B10, D1: F10, J1: K10"). Выберите 

Вот пример выбора нескольких листов. Функция Array используется для ссылки на листы. Эту же технику можно использовать для фигур.

 Worksheets (Array ("Sheet2", "Sheet3", "Sheet5")). Выберите
 

Когда эта строка кода запускается, первым элементом в массиве будет активировано . Это означает, что Sheet2 будет активным листом, который видит пользователь.

Что, если мы хотим оставить три листа выбранными, но вместо этого предоставить пользователю Sheet3? Здесь в игру вступает метод Activate.

Когда использовать метод активации

Метод Activate позволяет выбрать один объект. Это может быть один объект в выделенной области, если уже выбрано несколько объектов.

Следующие строки выбирают три листа, а затем делают Sheet3 активным листом, который видит пользователь.

 Worksheets (Array ("Sheet2", "Sheet3", "Sheet5")). Выберите 

Worksheets ("Sheet3"). Активируйте

Если вы используете , а не , у вас выбрана группа объектов, тогда Activate выберет только один объект.Он НЕ добавляет к текущему выделению и будет работать так же, как и Select.

Будьте осторожны с активацией

Возможно, вы не всегда знаете, какие объекты выбраны в книге. Следовательно, вы не всегда можете использовать Activate для выбора одного объекта .

Например, предположим, что в вашем макросе есть строка кода для активации Sheet1.

Если перед запуском макроса пользователь выбрал Лист1 — Лист3, то все три листа останутся выбранными . Возможно, вам это не понадобится, если ваша следующая строка кода изменяет ячейку на Sheet1. В зависимости от того, как написан код , все три листа могут быть изменены , что приведет к нежелательным результатам. 😬

Если вы активируете объект, которого НЕТ в выделении, то этот единственный объект будет выбран, а ранее выбранные объекты больше не будут выделены. Например, если у пользователя выбран Sheet1 — Sheet3, а ваш код активирует Sheet4, то будет выбран только Sheet4.

Главный вывод здесь состоит в том, что существует множество потенциальных нежелательных результатов при использовании Activate для выбора одного объекта.Итак, лучше всего использовать Select для выделения отдельных объектов .

Активировать для книг

Метод Activate также используется при активации Workbooks и Windows . Для этих объектов нет метода Select.

 ThisWorkbook.Activate 

Workbooks ("Book3.xlsx"). Активировать

Windows ("Book3.xlsx"). Активировать

Избегайте выбора и активируйте по возможности

Приятно знать разницу между этими двумя методами, но они могут не понадобиться вам так часто, как вы думаете.Особенно, если вы только начинаете работать с VBA и много используете макрорекордер.

Код средства записи макросов содержит множество строк с методом Select, поскольку он генерирует код для каждого выполняемого нами действия. Тем не менее, нам НЕ нужно выбирать объект, прежде чем мы выполним над ним действия . Это может замедлить наш код и сделать его более подверженным ошибкам.

Вот статья о том, как избежать метода выбора в VBA и почему, в ней объясняется больше.

Заключение

Лучше всего использовать Select, если вы хотите выбрать один объект или несколько объектов.Активировать следует использовать, когда вы хотите активировать (просмотреть / выбрать) объект в существующем выделении. Активация также используется для выбора рабочих книг, поскольку для этого объекта нет метода выбора.

Я что-нибудь пропустил? Пожалуйста, оставьте комментарий ниже с вопросами или предложениями. Спасибо!

VBA предполагает активную книгу и активный рабочий лист в Excel

Итог: Изучите 2 важных предположения, которые VBA делает при запуске наших макросов в Excel, и избегайте ошибок и сбоев.

Уровень квалификации: Начинающий

Нажмите здесь, чтобы зарегистрироваться на бесплатный веб-семинар по макросам и VBA

Требуется контекст VBA

При написании и запуске макросов очень важно предоставить правильный контекст .

Мы должны указать книгу и / или рабочий лист , на которых мы хотим запустить код. В противном случае VBA примет это решение за нас, и это может вызвать у нас проблемы!

В моем бесплатном вебинаре «7 шагов для начала работы с макросами и VBA» я использую аналогию со мной и моей женой на кухне, чтобы объяснить это правило.Когда мы с кем-то общаемся, важно предоставить контекст того, о чем мы говорим. Иначе они запутаются.

В этом случае я спрашиваю свою жену: «Эй, ты можешь включить свет, пожалуйста?» Если мы оба находимся на кухне, и у нашей кухни только один свет, то ей легко понять, о каком свете я говорю.

Однако, если она находится в другой комнате, и я задам тот же вопрос, она будет сбита с толку. О каком свете я говорю ???

Это может привести к путанице и спорам, особенно при общении с супругом… 🙂 В VBA есть похожее правило, которое также может доставить нам неприятности.

VBA предполагает активную книгу и активный лист

Если мы не укажем, на какой книге или листе мы хотим запустить строку кода, то VBA выполнит этот код в активной книге и активном листе.

ActiveWorkbook — это рабочая книга, которую вы (или пользователь) выбрали перед запуском макроса.

ActiveSheet — это вкладка рабочего листа, которая в данный момент выбирается перед запуском макроса. Если выбрано несколько листов, ActiveSheet — это лист, который просматривается в данный момент.

Это предположение не всегда то, что нам нужно. Поэтому важно, чтобы мы указали VBA точно , где мы хотим запустить код для изменения объекта на листе.

Примеры макросов VBA

 Подложка ActiveWorksheet_Assuming ()

'VBA предполагает, что мы имеем в виду
'ActiveWorkbook и ActiveWorksheet, если НЕ указаны

'Работает в ActiveWorkbook и ActiveWorksheet
Диапазон ("A1"). Значение = 100.

Конец подписки

Подложка ActiveWorkbook_Assuming ()

'Работает в ActiveWorkbook
Рабочие листы («Лист2»).Диапазон ("A2"). Значение = 100

Конец подписки

Sub Fully_Qualified ()

'Выполняется в указанной книге и листе
Рабочие книги ("Book2.xlsx"). Рабочие листы ("Sheet3"). Диапазон ("B3"). Значение = 100

Конец подписки
 

Ссылки на рабочие тетради и рабочие листы

Существует ТОННА различных способов ссылаться на книги и рабочие листы и обеспечивать правильный контекст в VBA. Важно знать это правило перед запуском макросов.

У меня есть несколько видеороликов из моего курса VBA Pro по ссылкам на книги и рабочие листы, которыми я делюсь после вебинара.Так что, если вы хотите узнать об этом больше, зарегистрируйтесь на мой бесплатный обучающий веб-семинар «7 шагов для начала работы с макросами и VBA».

Вы можете выбрать день и время, которые подходят именно вам.

Пожалуйста, оставьте комментарий ниже с любыми вопросами по этому правилу. Спасибо!

Полное руководство по рабочему листу VBA

«Провидец начинает с чистого листа бумаги и заново представляет мир» — Малкольм Гладуэлл

Этот пост представляет собой полное руководство по использованию Excel VBA Worksheet в Excel VBA.Если вы хотите узнать, как что-то сделать быстро, ознакомьтесь с кратким руководством к рабочему листу VBA ниже.

Если вы новичок в VBA, то этот пост — отличное место для начала. Мне нравится разбивать вещи на простые термины и объяснять их простым английским языком без жаргона.

Вы можете прочитать сообщение от начала до конца , поскольку оно написано в логическом порядке. При желании вы можете использовать приведенное ниже содержание и перейти непосредственно к выбранной вами теме.

Краткое руководство к рабочему листу VBA

В следующей таблице приведены краткие сведения о различных методах работы с листами.

Примечание: Я использую рабочих листов в таблице ниже без указания рабочей книги, т.е. рабочих листов , а не ThisWorkbook.Worksheets , wk. Рабочих листов и т.д. Вы всегда должны указывать книгу при использовании Worksheets .В противном случае по умолчанию будет использоваться активная книга.

Задача Как к
Доступ к рабочему листу по имени Рабочие листы («Лист1»)
Доступ к рабочим листам по позиции слева Рабочие листы (2)
Рабочие листы (4)
Доступ к крайнему левому листу Рабочие листы (1)
Доступ к крайнему правому листу Рабочие листы (Worksheets.Счетчик)
Доступ с использованием кодового имени рабочего листа (только текущая книга) см. Раздел «Кодовое имя» ниже
Доступ с использованием кодового имени рабочего листа (другая книга) см. Раздел «Кодовое имя» ниже
Доступ к активному листу ActiveSheet
Объявить переменную рабочего листа Dim sh As Worksheet
Назначить переменную рабочего листа Установить sh = Worksheets («Sheet1»)
Добавить рабочий лист Рабочие листы. Добавить
Добавить рабочий лист и назначить его переменной Установить sh = Worksheets.Add
Добавить рабочий лист на первую позицию (слева) Рабочие листы.Добавить перед: = Рабочие листы (1)
Добавить рабочий лист в последнюю позицию (справа) Рабочие листы.Добавить после: = Рабочие листы (Worksheets.Count)
Добавить несколько рабочих листов Рабочих листов.Добавить количество: = 3
Активировать лист л.Активировать
Копия листа л. Копия
Копировать после листа sh2.Копировать после: = Sh3
Копировать перед листом sh2.Копировать до: = Sh3
Удалить лист л. Удалить
Удалить лист без предупреждения Application.DisplayAlerts = False
sh.Delete
Application.DisplayAlerts = True
Изменить имя рабочего листа л.Name = «Data»
Показать / скрыть рабочий лист sh.Visible = xlSheetHidden
sh.Visible = xlSheetVisible
Перебрать все рабочие листы (For) Dim i As Long
For i = 1 To Worksheets.Count
Debug.Print Worksheets (i) .Name
Next i
Прокрутите все рабочие листы (для каждого) Dim sh As Worksheet
For Each sh In Worksheets
Debug.Print sh.Name
Next

Введение

Три самых важных элемента VBA — это рабочая книга, рабочий лист и ячейки.Из всего кода, который вы пишете, 90% будет включать один или все из них.

Наиболее часто рабочий лист в VBA используется для доступа к его ячейкам. Вы можете использовать его для защиты, скрытия, добавления, перемещения или копирования рабочего листа. Однако вы в основном будете использовать его для выполнения некоторых действий с одной или несколькими ячейками на листе.

Использование рабочих листов проще, чем использование рабочих книг. С книгами вам может потребоваться открыть их, найти, в какой папке они находятся, проверить, используются ли они и т. Д.В случае с листом он либо существует в книге, либо нет.

Доступ к рабочему листу

В VBA каждая книга содержит набор листов. В этой коллекции есть запись для каждого листа в книге. Эта коллекция просто называется Worksheets и используется очень аналогично коллекции Workbooks . Чтобы получить доступ к листу, все, что вам нужно сделать, это указать имя.

Приведенный ниже код записывает «Hello World» в ячейку A1 листов Sheet1, Sheet2 и Sheet3 текущей книги.

https://excelmacromastery.com/
Общедоступная подпрограмма WriteToCell1 ()

    'Запись в ячейку A1 на листах Sheet1, Sheet2 и Sheet3
    ThisWorkbook.Worksheets ("Sheet1"). Range ("A1") = "Hello World"
    ThisWorkbook.Worksheets ("Sheet2"). Range ("A1") = "Hello World"
    ThisWorkbook.Worksheets ("Sheet3"). Range ("A1") = "Hello World"

Конец подписки
 

Коллекция Worksheets всегда принадлежит рабочей книге. Если мы не укажем книгу, по умолчанию будет использоваться активная книга.

https://excelmacromastery.com/
Общедоступная подпрограмма WriteToCell1 ()

    "Рабочие листы" относятся к рабочим листам в активной книге.
    Рабочие листы ("Sheet1"). Range ("A1") = "Hello World"
    Рабочие листы ("Sheet2"). Range ("A1") = "Hello World"
    Рабочие листы ("Sheet3"). Range ("A1") = "Hello World"

Конец подписки
 

Скрыть лист

Следующие примеры показывают, как скрыть и показать рабочий лист

ThisWorkbook.Листы ("Лист1"). Visible = xlSheetHidden

ThisWorkbook.Worksheets ("Sheet1"). Visible = xlSheetVisible
 

Если вы хотите запретить пользователю доступ к рабочему листу, вы можете сделать его «очень скрытым». Это означает, что его можно сделать видимым только с помощью кода.

'Скрыть от доступа пользователей
ThisWorkbook.Worksheets ("Sheet1"). Visible = xlVeryHidden

'Это единственный способ сделать лист xlVeryHidden видимым
ThisWorkbook.Worksheets ("Sheet1").Visible = xlSheetVisible
 

Защитить рабочий лист

Другой пример использования рабочего листа — это когда вы хотите его защитить

ThisWorkbook.Worksheets ("Sheet1"). Защитить пароль: = "MyPass"

ThisWorkbook.Worksheets ("Sheet1"). Снять защиту паролем: = "MyPass"
 

Нижний индекс вне допустимого диапазона

Когда вы используете Worksheets , вы можете получить ошибку:

Ошибка выполнения 9 Индекс вне допустимого диапазона

Это означает, что вы пытались получить доступ к несуществующему листу.Это может произойти по следующим причинам

  1. Имя рабочего листа для Worksheets написано неправильно.
  2. Имя рабочего листа изменено.
  3. Рабочий лист удален.
  4. Индекс был слишком большим, например Вы использовали рабочих листов (5) , но их всего четыре
  5. Используется неправильная книга, например Рабочих тетрадей ( «book1.xlsx», ). Рабочие листы («Лист1») вместо Рабочих тетрадей ( «book3.xlsx »). Рабочие листы (« Sheet1 ») .

Если у вас все еще есть проблемы, используйте один из циклов из раздела «Цикл по рабочим листам», чтобы распечатать имена всех листов коллекции.

Использование указателя для доступа к рабочему листу

До сих пор мы использовали имя листа для доступа к листу. Индекс относится к положению вкладки листа в книге. Поскольку положение может быть легко изменено пользователем, использовать его не рекомендуется.

В следующем коде показаны примеры использования индекса

.

https://excelmacromastery.com/
'Использование этого кода - плохая идея, поскольку
'положение листов все время меняется
Общедоступный Sub UseSheetIdx ()

    С помощью ThisWorkbook
        'Самый левый лист
        Debug.Print .Worksheets (1) .Name
        'Третий лист слева
        Debug.Print .Worksheets (3) .Name
        'Самый правый лист
        Отлаживать.Распечатать .Worksheets (.Worksheets.Count) .Name
    Конец с

Конец подписки
 

В приведенном выше примере я использовал Debug.Print для печати в окне Immediate Window. Чтобы просмотреть это окно, выберите View-> Immediate Window (или Ctrl G)

.

Использование кодового имени рабочего листа

Лучший способ получить доступ к рабочему листу — использовать кодовое имя. Каждый рабочий лист имеет имя листа и кодовое имя.Имя листа — это имя, которое отображается на вкладке листа в Excel.

Изменение имени листа не приводит к изменению кодового имени, а это означает, что ссылка на лист по кодовому имени является хорошей идеей.

Если вы посмотрите в окно свойств VBE, вы увидите оба имени. На изображении вы можете видеть, что кодовое имя — это имя вне скобок, а имя листа находится в скобках.

Имя листа и кодовое имя можно изменить в окне свойств листа (см. Изображение ниже).

Если ваш код относится к имени кода, то пользователь может изменить имя листа, и это не повлияет на ваш код. В приведенном ниже примере мы ссылаемся на рабочий лист напрямую, используя кодовое имя.

https://excelmacromastery.com/
Public Sub UseCodeName2 ()

    'Использование кодового имени рабочего листа
    Debug.Print CodeName.Name
    CodeName.Range ("A1") = 45
    CodeName.Visible = True

Конец подписки
 

Это делает код легко читаемым и безопасным для пользователя, меняющего имя листа.

Кодовое имя в других книгах

У использования кодового имени есть один недостаток. Он может относиться только к рабочим листам в книге, которые содержат код, то есть ThisWorkbook.

Однако мы можем использовать простую функцию, чтобы найти кодовое имя рабочего листа в другой книге.

https://excelmacromastery.com/
Public Sub UseSheet ()

    Рабочий лист Dim sh As
    'Получите рабочий лист, используя кодовое имя
    Установить sh = SheetFromCodeName ("CodeName", ThisWorkbook)
    'Используйте рабочий лист
    Отлаживать.Распечатать sh.Name

Конец подписки

'Эта функция получает объект рабочего листа из кодового имени
Открытая функция SheetFromCodeName (имя как строка, bk как рабочая книга) как рабочий лист

    Рабочий лист Dim sh As
    За каждую ш в кн. Рабочие листы
        Если sh.CodeName = Name, то
           Установить SheetFromCodeName = sh
           Выход для
        Конец, если
    Следующий ш

Конечная функция
 

Использование приведенного выше кода означает, что если пользователь изменит имя рабочего листа, ваш код не пострадает.

Есть еще один способ получить имя листа внешней книги, используя кодовое имя. Вы можете использовать элемент VBProject этой Рабочей книги.

Вы ​​можете увидеть, как это сделать, в примере ниже. Я включил это только для полноты картины и рекомендую использовать метод из предыдущего примера, а не из этого.

https://excelmacromastery.com/
Открытая функция SheetFromCodeName2 (codeName As String _
                             , bk как рабочая тетрадь) как рабочий лист

    'Получить имя листа из CodeName с помощью VBProject
    Dim sheetName As String
    sheetName = bk.VBProject.VBComponents (codeName) .Properties («Имя»)

    'Используйте имя листа, чтобы получить объект рабочего листа
    Установить SheetFromCodeName2 = bk.Worksheets (sheetName)

Конечная функция
 

Краткое описание кодового названия

Ниже приводится краткое описание использования кодового имени

.

  1. Кодовое имя рабочего листа можно использовать непосредственно в коде, например Лист 1. Диапазон
  2. Кодовое имя будет работать, если имя рабочего листа будет изменено.
  3. Кодовое имя может использоваться только для листов в той же книге, что и код.
  4. Везде, где вы видите ThisWorkbook.Worksheets («имя листа») , вы можете заменить его кодовым именем рабочего листа.
  5. Вы можете использовать приведенную выше функцию SheetFromCodeName , чтобы получить кодовое имя рабочих листов в других книгах.

Активный лист

Объект ActiveSheet относится к рабочему листу, который в настоящее время активен.Вы должны использовать ActiveSheet только в том случае, если у вас есть особая необходимость обратиться к активному рабочему листу.

В противном случае следует указать используемый лист.

Если вы используете метод рабочего листа, например Диапазон , и не упоминаете рабочий лист, он будет использовать активный рабочий лист по умолчанию.

'Запись в ячейку A1 на активном листе
ActiveSheet.Range ("A1") = 99

'Активный лист по умолчанию, если лист не используется
Диапазон ("A1") = 99
 

Объявление объекта рабочего листа

Объявление объекта рабочего листа полезно для того, чтобы сделать ваш код более аккуратным и легким для чтения.

В следующем примере показан код для обновления диапазонов ячеек. Первый Sub не объявляет объект рабочего листа. Вторая подпрограмма объявляет объект рабочего листа, поэтому код намного понятнее.

https://excelmacromastery.com/
Публичный Sub SetRangeVals ()

    Debug.Print ThisWorkbook.Worksheets ("Sheet1"). Имя
    ThisWorkbook.Worksheets ("Sheet1"). Range ("A1") = 6
    ThisWorkbook.Worksheets ("Sheet1"). Range ("B2: B9"). Font.Italic = True
    ThisWorkbook.Листы ("Sheet1"). Диапазон ("B2: B9"). Interior.Color = rgbRed

Конец подписки
 

https://excelmacromastery. com/
Публичный Sub SetRangeValsObj ()

    Тусклый лист как рабочий лист
    Установить sht = ThisWorkbook.Worksheets ("Sheet1")

    sht.Range ("A1") = 6
    sht.Range ("B2: B9"). Font.Italic = True
    sht.Range ("B2: B9"). Interior.Color = rgbRed

Конец подписки
 

Вы ​​также можете использовать ключевое слово With с объектом листа, как показано в следующем примере.

https://excelmacromastery.com/
Открытый Sub SetRangeValsObjWith ()

    Тусклый лист как рабочий лист
    Установить sht = ThisWorkbook.Worksheets ("Sheet1")

    С sht
        .Range ("A1") = 6
        .Range ("B2: B9"). Font.Italic = True
        .Range ("B2: B9"). Interior.Color = rgbRed
    Конец с

Конец подписки
 

В двух словах о доступе к рабочему листу

Имея разные способы доступа к листу, вы можете быть сбиты с толку или сбиты с толку.Итак, в этом разделе я собираюсь разбить это на простые термины

1. Если вы хотите использовать тот рабочий лист, который в настоящее время активен, используйте ActiveSheet.

ActiveSheet.Range ("A1") = 55
 

2. Если рабочий лист находится в той же книге, что и код, используйте кодовое имя.

Sheet1.Range ("A1") = 55
 

3. Если рабочий лист находится в другой книге, сначала получите книгу, а затем получите рабочий лист.

'Получить книгу
Dim wk As Workbook
Установите wk = Workbooks.Open ("C: \ Docs \ Accounts.xlsx", ReadOnly: = True)

'Тогда получите рабочий лист
Рабочий лист Dim sh As
Установить sh = wk.Worksheets ("Sheet1")
 

Если вы хотите защитить себя от изменения имени листа пользователем, используйте функцию SheetFromCodeName из раздела «Кодовое имя».

'Получить книгу
Dim wk As Workbook
Установите wk = Workbooks.Open ("C: \ Docs \ Accounts.xlsx ", только чтение: = True)

'Тогда получите рабочий лист
Рабочий лист Dim sh As
Установить sh = SheetFromCodeName ("sheetcodename", нед. )
 

Добавить лист

Примеры в этом разделе показывают, как добавить новый рабочий лист в книгу. Если вы не предоставите никаких аргументов функции Добавить , то новый рабочий лист будет помещен перед активным листом.

Когда вы добавляете Рабочий лист, он создается с именем по умолчанию, например «Sheet4».Если вы хотите изменить имя, вы можете легко сделать это с помощью свойства Name .

В следующем примере добавляется новый рабочий лист и изменяется имя на «Учетные записи». Если рабочий лист с названием «Учетные записи» уже существует, вы получите сообщение об ошибке.

https://excelmacromastery.com/
Общедоступная дополнительная таблица ()

    Тусклый лист как рабочий лист

    'Добавляет новый лист перед активным листом
    Установите sht = ThisWorkbook.Worksheets.Добавлять
    'Установить имя листа
    sht.Name = "Аккаунты"

    'Добавляет 3 новых листа перед активным листом
    ThisWorkbook.Worksheets.Add Count: = 3

Конец подписки
 

В предыдущем примере вы добавляете рабочие листы относительно активного рабочего листа. Вы также можете указать точное положение для размещения рабочего листа.

Для этого вам нужно указать, до какого рабочего листа следует вставить новый или после него. В следующем коде показано, как это сделать.

https://excelmacromastery.com/
Общедоступная подписка AddSheetFirstLast ()

    Dim shtNew As Worksheet
    Dim shtFirst As Worksheet, shtLast As Worksheet

    С помощью ThisWorkbook

        Установить shtFirst = .Worksheets (1)
        Установите shtLast = .Worksheets (.Worksheets.Count)

        'Добавляет новый лист на первую позицию в книге
        Установите shtNew = Worksheets.Add (До: = shtFirst)
        shtNew.Name = "FirstSheet"

        'Добавляет новый лист на последнюю позицию в книге
        Установите shtNew = Рабочие листы.Добавить (После: = shtLast)
        shtNew. Name = "LastSheet"

    Конец с

Конец подписки
 

Удалить лист

Чтобы удалить лист, просто позвоните по номеру Delete .

Рабочий лист Dim sh As
Установить sh = ThisWorkbook.Worksheets ("Sheet12")
ш.Удалить
 

Excel отобразит предупреждающее сообщение при удалении листа. Если вы хотите скрыть это сообщение, вы можете использовать код ниже

Заявление.DisplayAlerts = Ложь
ш.Удалить
Application.DisplayAlerts = True
 

Есть две проблемы, на которые следует обратить внимание, когда дело доходит до удаления рабочих листов.

Если вы попытаетесь получить доступ к рабочему листу после его удаления, вы получите ошибку «Нижний индекс вне диапазона», которую мы видели в разделе «Доступ к рабочему листу».

Рабочий лист Dim sh As
Установить sh = ThisWorkbook.Worksheets ("Sheet2")
ш.Удалить

'В этой строке будет указано' Подстрочный индекс вне диапазона ', поскольку «Лист2» ​​не существует
Установите sh = ThisWorkbook.Рабочие листы («Лист2»)
 

Вторая проблема — когда вы назначаете переменную рабочего листа. Если вы попытаетесь использовать эту переменную после удаления листа, вы получите ошибку автоматизации, подобную этой

Ошибка времени выполнения -21147221080 (800401a8 ′) Ошибка автоматизации

Если вы используете кодовое имя рабочего листа, а не переменную, это приведет к сбою Excel, а не выдаст ошибку автоматизации.

В следующем примере показано, как возникают ошибки автоматизации

ш.Удалить

'Эта строка выдаст ошибку автоматизации
Debug.Assert sh.Name
 

Если вы назначите переменную рабочего листа допустимому рабочему листу, он будет работать нормально

ш.Удалить

'Назначить sh на другой лист
Установить sh = Worksheets ("sheet3")

'Эта строка будет работать нормально
Debug.Assert sh. Name
 

Цикл по рабочим листам

Рабочие листы, входящие в рабочую книгу, представляют собой набор рабочих листов, принадлежащих рабочей книге.Вы можете просмотреть каждый лист в коллекции листов, используя цикл For Each Loop или For Loop.

В следующем примере используется цикл For Each .

https://excelmacromastery.com/
Публичная подпрограмма LoopForEach ()

    'Записывает «Hello World» в ячейку A1 для каждого листа.
    Тусклый лист как рабочий лист
    За каждую штуку в ThisWorkbook.Worksheets
         sht.Range ("A1") = "Привет, мир"
    Следующий дерьмо

Конец подписки
 

В следующем примере используется стандартный цикл For

https: // excelmacromastery.com /
Публичная подпрограмма LoopFor ()
    
    'Записывает «Hello World» в ячейку A1 для каждого листа.
    Тусклый я как долго
    Для i = 1 To ThisWorkbook.Worksheets.Count
         ThisWorkbook.Worksheets (i) .Range ("A1") = "Привет, мир"
    Следующий дерьмо

Конец подписки
 

Вы ​​узнали, как получить доступ ко всем открытым книгам и как получить доступ ко всем рабочим листам в ThisWorkbook. Давайте сделаем еще один шаг. Обеспечивает доступ ко всем листам во всех открытых книгах.

Примечание: Если вы используете подобный код для записи на рабочие листы, то сначала сделайте резервную копию всего, так как вы можете в конечном итоге записать неверные данные на все листы.

https://excelmacromastery.com/
Публичная подписка AllSheetNames ()

    'Печать имен книги и листов для
    'все листы в открытых книгах
    Тусклый труд как рабочая тетрадь
    Тусклый лист как рабочий лист
    Для каждой работы в рабочих тетрадях
        Для каждого изделия в рабочем листе.
            Debug.Print wrk.Name + ":" + sht.Name
        Следующий дерьмо
    Следующая работа

Конец подписки
 

Использование коллекции листов

В книге есть еще одна коллекция, похожая на рабочие листы, которая называется листов . Это иногда вызывает замешательство среди пользователей. Чтобы объяснить это, сначала вам нужно знать о типе листа, которым является диаграмма.

В Excel можно иметь лист, который представляет собой диаграмму. Для этого

  1. Создайте диаграмму на любом листе.
  2. Щелкните диаграмму правой кнопкой мыши и выберите «Переместить».
  3. Выберите первый вариант «Новый лист» и нажмите «ОК».

Теперь у вас есть рабочая книга с листами типового рабочего листа и одним типом диаграммы.

  • Коллекция Рабочие листы относится ко всем рабочим листам в книге. Не включает листы типа диаграммы.
  • Коллекция листов относится ко всем листам, принадлежащим рабочей книге, включая листы типовой диаграммы.

Ниже приведены два примера кода. Первый просматривает все листы в книге и печатает имя листа и тип листа. Второй пример делает то же самое с коллекцией Worksheets.

Чтобы опробовать эти примеры, вы должны сначала добавить лист диаграммы в свою книгу, чтобы увидеть разницу.

https://excelmacromastery.com/
Общедоступные подпрограммы CollSheets ()

    Dim sht как вариант
    'Отображение имени и типа каждого листа
    За каждый лист в ThisWorkbook.Sheets
        Debug.Print sht.Name & "is type" & TypeName (sht)
    Следующий дерьмо

Конец подписки

Общедоступная подпрограмма CollWorkSheets ()

    Dim sht как вариант
    'Отображение имени и типа каждого листа
    За каждую штуку в ThisWorkbook.Рабочие листы
        Debug.Print sht.Name & "is type" & TypeName (sht)
    Следующий дерьмо

Конец подписки
 

Если у вас нет листов диаграмм, то использование коллекции Sheets аналогично использованию коллекции Worksheets .

Заключение

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

Три наиболее важных элемента Excel VBA — это рабочие книги, рабочие листы, диапазоны и ячейки.Эти элементы будут использоваться практически во всем, что вы делаете. Понимание их значительно упростит вам жизнь и упростит изучение VBA.

Что дальше?

Бесплатное руководство по VBA Если вы новичок в VBA или хотите отточить свои существующие навыки VBA, почему бы не попробовать The Ultimate VBA Tutorial.

Связанное обучение: Получите полный доступ к обучающим вебинарам по Excel VBA и всем учебным материалам.

( ПРИМЕЧАНИЕ: Планируете создание приложения VBA или управление им? Узнайте, как создать 10 приложений Excel VBA с нуля.)

Получите бесплатную электронную книгу

Не стесняйтесь подписаться на мой информационный бюллетень и получать эксклюзивный контент VBA, который вы не можете найти здесь, в блоге, а также бесплатный доступ к моей электронной книге How to Ace the 21 Most Common Question in VBA , которая полна примеров, которые вы можете использовать в своем собственном коде.

Рабочий лист VBA Активировать и деактивировать событие в Excel 2019

Excel обнаруживает, когда рабочий лист активирован, и запускает событие Worksheet_Activate .Каждый рабочий лист (объект листа) имеет окно кода для обработки событий. Вы можете быстро получить доступ к этому окну кода, щелкнув правой кнопкой мыши вкладку рабочего листа и выбрав Просмотреть код :

Ниже приводится очень простой пример, который выполняется всякий раз, когда активируется конкретный рабочий лист. Этот код просто открывает окно сообщения, в котором отображается сообщение Добро пожаловать, :

 Private Sub Worksheet_Activate ()
 MsgBox "С возвращением!"
Концевой переводник 

Второй пример демонстрирует, как автоматически обновлять все сводные таблицы всякий раз, когда активируется конкретный рабочий лист:

 Private Sub Worksheet_Activate ()
 Dim i как целое число
 Для i = 1 в ActiveSheet. PivotTables.count
  ActiveSheet.PivotTables (i) .PivotCache.Refresh
 Далее я
Концевой переводник 

Скрыть или отключить пункт контекстного меню

Excel показывает контекстное меню при щелчке правой кнопкой мыши. Это меню различается в разных частях Excel. Например, когда вы щелкаете правой кнопкой мыши по ленте, появляется другое меню, но когда вы щелкаете правой кнопкой мыши по ячейке, появляется совершенно другое меню. В следующем примере мы отключим пункт контекстного меню « Cut » (который был добавлен в меню Cells ), когда активирован Sheet1 :

 Private Sub Worksheet_Activate ()
 CommandBars («Ячейка»).Элементы управления («Вырезать»). Включено = Ложь.
Концевой переводник 

Вы также можете скрыть пункт меню, а не отключить его, просто установите для свойства Visible значение False:

 Private Sub Worksheet_Activate ()
 CommandBars ("Ячейка"). Элементы управления ("Вырезать"). Visible = False
Концевой переводник 

Рабочий лист_Процедура отключения события

Мы уже знаем, что Excel определяет, когда рабочий лист активирован, и запускает событие Worksheet_Activate . Точно так же событие Worksheet_Deactivate возникает, когда вы покидаете текущий рабочий лист и активируете другой рабочий лист.В предыдущем примере мы отключили и скрыли элемент Cut из контекстного меню, после того как элемент меню скрыт или отключен, он будет скрыт или отключен для всей книги. Чтобы сделать этот пункт меню доступным для других листов, вы должны включить или увидеть его, когда вы покидаете рабочий лист. См. Worksheet_Deactivate Пример процедуры события:

 Private Sub Worksheet_Deactivate
 CommandBars ("Cell"). Controls ("Cut"). Enabled = True
 'CommandBars («Ячейка»). Элементы управления («Вырезать»).Visible = True
Концевой переводник 

Запрещение пользователю покидать рабочий лист

В следующем примере используется событие Worksheet_Deactivate , чтобы запретить пользователю активировать любой другой лист в книге. Если Sheet1 деактивирован, пользователь получает сообщение и возвращается к Sheet1 :

 Частный вспомогательный лист_Deactivate ()
 MsgBox "Извините, вам не разрешено уйти"
 Таблицы ("Лист1"). Активировать
Конец подписки
 

Событие Worksheet_Activate не срабатывает

События рабочего листа не запускаются при открытии книги.Например, событие Worksheet_Activate () для Sheet1 не запускается, когда рабочая книга открыта и Sheet1 уже активирован. Чтобы проверить, вы должны выбрать другую вкладку листа и снова выбрать эту вкладку листа.

Код введен в неправильный модуль
Где вы написали код? Код не будет работать, если он будет записан в другой модуль вместо соответствующего модуля. Каждый рабочий лист имеет собственное событие Activate, и вам нужно добавить код в его модуль, чтобы перехватить его событие Activate.Вы можете быстро получить доступ к этому окну кода, щелкнув правой кнопкой мыши вкладку рабочего листа и выбрав Просмотреть код :

События отключены
Если код был в правом модуле рабочего листа, события могут быть отключены. Excel не вызовет никаких событий, если для свойства Application.EnableEvents установлено значение False. Объект Application охватывает все Excel, поэтому отключение или включение событий повлияет не только на эту книгу, но и на все открытые книги.

Попробуйте закрыть другие книги одну за другой, чтобы определить, какая из них мешает работе вашего кода. Или напишите следующий код в непосредственном окне и нажмите кнопку ввода:

 Application.EnableEvents = True
 

Если события были отключены, теперь должно работать.

, автор: BrainBellupdated

Пошаговое руководство и 16 примеров

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

  1. Как ссылаться на все листы в книге.
  2. Как сослаться на все листы в книге.
  3. Как обращаться к активному листу.
  4. Как сослаться на лист по его порядковому номеру.
  5. Как сослаться на рабочий лист по его порядковому номеру.
  6. Как обращаться к листу по его имени.
  7. Как сослаться на рабочий лист по его имени.
  8. Как ссылаться на лист по его кодовому имени.
  9. Как сослаться на несколько листов.
  10. Как сослаться на несколько листов.
  11. Как перебрать все листы в книге с помощью цикла For Each… Next.
  12. Как пройти по всем листам в книге с помощью цикла For Each… Next.
  13. Как перебрать все листы в книге с помощью цикла For… Next.
  14. Как пройти по всем листам в книге с помощью цикла For… Next.
  15. Как просмотреть все листы в книге в обратном порядке.
  16. Как просмотреть все листы в книге в обратном порядке.

К этому руководству по VBA прилагается книга Excel, содержащая макросы, которые я использую в приведенных ниже примерах. Вы можете, , получить немедленный бесплатный доступ к этому примеру книги, подписавшись на информационный бюллетень Power Spreadsheets .

В качестве альтернативы вы можете получить доступ ко всем файлам, сопровождающим мои учебные пособия, здесь .

Связанные руководства по VBA и макросам в Excel

Следующие учебные пособия по VBA и макросам могут помочь вам лучше понять и реализовать приведенное ниже содержимое:

  • Общие конструкции и структуры VBA:
    • Изучите основы работы с макросами здесь.
    • Узнайте об основных терминах и конструкциях VBA здесь.
    • Узнайте, как включить или отключить макросы здесь.
    • Узнайте, как работать с редактором Visual Basic здесь.
    • Узнайте, как создавать подпроцедуры здесь.
    • Узнайте, как создавать ссылки на объекты здесь.
    • Узнайте, как работать со свойствами объекта здесь.
    • Узнайте, как работать с методами объекта здесь.
    • Узнайте, как объявлять переменные и работать с ними.
    • Узнайте о типах данных VBA здесь.
    • Узнайте, как работать с массивами здесь.
    • Узнайте, как работать с петлями здесь.
  • Практические приложения VBA и примеры макросов:
    • Узнайте, как удалять листы и рабочие листы здесь.

Дополнительные руководства по VBA и макросам можно найти в архивах.

# 1: Обратитесь ко всем листам в книге

Код VBA для ссылки на все листы в книге

Чтобы ссылались на все листы в книге с VBA , используйте ссылку на объект со следующей структурой:

Рабочая тетрадь.Таблицы
 

Процесс для ссылки на все листы в книге

Чтобы обратиться ко всем листам в книге с VBA , выполните следующие действия:

  1. Определите рабочую книгу, содержащую листы (Workbook).
  2. Обратитесь к коллекции листов, представляющей все листы в книге (листы).

Объяснение оператора VBA

Элемент: Workbook

Объект Workbook, представляющий книгу Excel, содержащую листы, на которые вы ссылаетесь.

Обычно вы можете работать с одним из следующих свойств, чтобы ссылаться на этот объект Workbook:

  • Application.ActiveWorkbook.
  • Application.ThisWorkbook.
  • Приложение. Рабочие тетради.
Элемент: Sheets

Свойство Workbook.Sheets возвращает коллекцию Sheets, представляющую все листы в Workbook. Коллекция Sheets, как правило, может содержать:

  • объектов Chart, где каждый объект Chart представляет отдельный лист диаграммы; или
  • Объекты рабочего листа, где каждый объект рабочего листа представляет отдельный рабочий лист.

Пример макроса для ссылки на все листы в книге

В следующем примере макроса отображается окно сообщения (MsgBox) с количеством листов (Sheets. Count) в книге, где хранится макрос (ThisWorkbook).

Sub referToSheetsCollection ()
    Источник: https://powerspreadsheets.com/
    'отображает окно сообщения с количеством листов в этой книге
    'для получения дополнительной информации: https://powerspreadsheets.com/excel-vba-sheets-worksheets/

    'отобразить окно сообщения с количеством листов в этой книге
    MsgBox ThisWorkbook.Sheets.Count

Конец подписки
 

Эффекты выполнения примера макроса для ссылки на все листы в книге

Следующий GIF иллюстрирует результаты выполнения примера макроса.Книга, в которой хранится макрос, содержит 5 листов (Sheet1 — Sheet5) и 5 ​​листов диаграмм (Chart1 — Chart5). Таким образом, Excel отображает окно сообщения с номером 10.

# 2: См. Все рабочие листы в книге

Код VBA для ссылки на все рабочие листы в книге

К относятся ко всем рабочим листам в книге с VBA используйте ссылку на объект со следующей структурой:

Рабочая тетрадь.
 

Процесс для ссылки на все рабочие листы в книге

Чтобы обратиться ко всем рабочим листам в книге с VBA , выполните следующие действия:

  1. Определите рабочую книгу, содержащую рабочие листы (Workbook).
  2. Обратитесь к коллекции Таблиц, представляющей все рабочие листы в Рабочей книге (Worksheets).

Объяснение оператора VBA

Элемент: Workbook

Объект Workbook, представляющий книгу Excel, содержащую листы, на которые вы ссылаетесь.

Для ссылки на этот объект Workbook обычно можно работать с одним из следующих свойств:

  • Application.ActiveWorkbook.
  • Application.ThisWorkbook.
  • Приложение. Рабочие тетради.
Элемент: Worksheets

Свойство Workbook.Worksheets возвращает коллекцию Sheets, представляющую все листы в Workbook.

Пример макроса для ссылки на все листы в книге

В следующем примере макроса отображается окно сообщения (MsgBox) с количеством листов (Worksheets. Count) в книге, где хранится макрос (ThisWorkbook).

Sub referToWorksheetsCollection ()
    Источник: https://powerspreadsheets.com/
    'отображает окно сообщения с количеством листов в этой книге
    'для получения дополнительной информации: https: // powerspreadsheets.com / excel-vba-sheet-worksheets /

    'отобразить окно сообщения с количеством листов в этой книге
    MsgBox ThisWorkbook.Worksheets.Count

Конец подписки
 

Эффекты выполнения примера макроса для ссылки на все рабочие листы в книге

Следующий GIF иллюстрирует результаты выполнения примера макроса. Книга, в которой хранится макрос, содержит 5 листов (от Sheet1 до Sheet5). Таким образом, Excel отображает окно сообщения с номером 5.

# 3: См. Активный лист

Код VBA для ссылки на активный лист

Чтобы ссылался на активный лист с VBA , используйте ссылку на объект с следующая структура:

Рабочая тетрадь.ActiveSheet
 

Процесс обращения к активному листу

Чтобы обратиться к активному листу с VBA , выполните следующие действия:

  1. Определите рабочую книгу, содержащую лист (Workbook). Если вы не идентифицируете книгу, VBA работает с активной книгой.
  2. Обратитесь к активному листу в Рабочей книге (ActiveSheet).

Объяснение оператора VBA

Элемент: Workbook

Объект Workbook, представляющий книгу Excel, содержащую активный лист, на который вы ссылаетесь.

Для ссылки на этот объект Workbook обычно можно работать с одним из следующих свойств:

  • Application.ActiveWorkbook.
  • Application.ThisWorkbook.
  • Приложение. Рабочие тетради.

Если вы не укажете Workbook при обращении к активному листу с ActiveSheet, VBA будет работать с активной книгой (книга вверху).

Элемент: ActiveSheet

ActiveSheet возвращает объект, представляющий активный лист (лист сверху) в Workbook, как показано ниже:

  • Если вы укажете Workbook, ActiveSheet вернет объект, представляющий активный лист в Workbook.
  • Если вы не укажете Workbook, ActiveSheet вернет объект, представляющий активный лист в активной книге (книга вверху).

Пример макроса для ссылки на активный лист

В следующем примере макроса отображается окно сообщения (MsgBox) с именем (Name) активного листа в активной книге (ActiveSheet).

Sub referToActiveSheet ()
    Источник: https://powerspreadsheets.com/
    'отображает окно сообщения с именем активного листа
    'для получения дополнительной информации: https: // powerspreadsheets.com / excel-vba-sheet-worksheets /

    'отобразить окно сообщения с именем активного листа
    MsgBox ActiveSheet.Name

Конец подписки
 

Эффекты выполнения примера макроса для ссылки на активный лист

Следующий GIF иллюстрирует результаты выполнения примера макроса. Как и ожидалось, Excel отображает окно сообщения с именем активного листа (Sheet1).

# 4: Обратитесь к листу по порядковому номеру

Код VBA для ссылки на лист по порядковому номеру

Для обратитесь к листу по его порядковому номеру с VBA , используйте ссылку на объект со следующей структурой:

Рабочая тетрадь.Листы (SheetIndexNumber)
 

Процесс обращения к листу по порядковому номеру

Чтобы сослаться на лист по его порядковому номеру с VBA , выполните следующие действия:

  1. Определите рабочую книгу, содержащую лист (Workbook).
  2. Определите лист по его порядковому номеру (Sheets (SheetIndexNumber)).

Объяснение оператора VBA

Элемент: Workbook

Объект Workbook, представляющий книгу Excel, содержащую лист, на который вы ссылаетесь.

Для ссылки на этот объект Workbook обычно можно работать с одним из следующих свойств:

  • Application.ActiveWorkbook.
  • Application.ThisWorkbook.
  • Приложение. Рабочие тетради.
Элемент: Sheets (SheetIndexNumber)

Свойство Workbook. Sheets возвращает коллекцию Sheets, представляющую все листы в Workbook. Коллекция Sheets, как правило, может содержать:

  • объектов Chart, где каждый объект Chart представляет отдельный лист диаграммы; или
  • Объекты рабочего листа, где каждый объект рабочего листа представляет отдельный рабочий лист.

SheetIndexNumber — это порядковый номер листа, на который вы ссылаетесь. Этот порядковый номер представляет положение листа на панели вкладок Рабочей книги слева направо. Для этих целей в подсчет обычно включаются:

  • скрытых листов; и
  • Как листы диаграмм, так и рабочие листы.

Следовательно, Sheets (SheetIndexNumber) обычно возвращает отдельный объект Chart или Worksheet, представляющий лист диаграммы или рабочий лист, номер индекса которого SheetIndexNumber.

Пример макроса для ссылки на лист по номеру индекса

Следующий пример макроса активирует (активирует) пятый лист (Листы (5)) в книге, где хранится макрос (ThisWorkbook).

Sub referToSheetIndex ()
    Источник: https://powerspreadsheets.com/
    'активирует пятый лист в этой книге
    'для получения дополнительной информации: https://powerspreadsheets.com/excel-vba-sheets-worksheets/

    'активировать пятый лист в этой книге
    ThisWorkbook.Sheets (5) .Активировать

Конец подписки
 

Эффекты выполнения примера макроса для ссылки на лист по порядковому номеру

Следующий GIF иллюстрирует результаты выполнения примера макроса.

При выполнении макроса активным листом является Лист1. Как и ожидалось, Excel активирует пятый лист (Chart1).

# 5: Обратитесь к рабочему листу по порядковому номеру

Код VBA для ссылки на рабочий лист по порядковому номеру

Для обратитесь к рабочему листу по его порядковому номеру с помощью VBA , используйте ссылку на объект со следующей структурой:

Workbook.Worksheets (WorksheetIndexNumber)
 

Процесс обращения к рабочему листу по порядковому номеру

Чтобы сослаться на рабочий лист по его порядковому номеру с VBA , выполните следующие действия:

  1. Определите рабочую книгу, содержащую рабочий лист (Workbook).
  2. Определите рабочий лист по его порядковому номеру (Worksheets (WorksheetIndexNumber)).

Объяснение оператора VBA

Элемент: Workbook

Объект Workbook, представляющий книгу Excel, содержащую рабочий лист, на который вы ссылаетесь.

Для ссылки на этот объект Workbook обычно можно работать с одним из следующих свойств:

  • Application.ActiveWorkbook.
  • Application.ThisWorkbook.
  • Приложение. Рабочие тетради.
Элемент: Рабочие листы (WorksheetIndexNumber)

The Workbook.Свойство Worksheets возвращает коллекцию Sheets, представляющую все листы в Workbook.

WorksheetIndexNumber — это порядковый номер рабочего листа, на который вы ссылаетесь. Этот индексный номер представляет положение рабочего листа на панели вкладок Рабочей книги слева направо. Для этих целей подсчет обычно:

  • Включает скрытые рабочие листы; но
  • Не включает листы диаграмм.

Таким образом, Worksheets (WorksheetIndexNumber) возвращает отдельный объект Worksheet, представляющий рабочий лист, порядковый номер которого — WorksheetIndexNumber.

Пример макроса для ссылки на рабочий лист по номеру индекса

Следующий пример макроса активирует (активирует) первый рабочий лист (Рабочие листы (1)) в книге, где хранится макрос (ThisWorkbook).

Sub referToWorksheetIndex ()
    Источник: https://powerspreadsheets.com/
    'активирует первый рабочий лист в этой книге
    'для получения дополнительной информации: https://powerspreadsheets.com/excel-vba-sheets-worksheets/

    'активировать первый лист в этой книге
    ThisWorkbook.Рабочие листы (1) .Активировать

Конец подписки
 

Эффекты выполнения примера макроса для ссылки на рабочий лист по номеру индекса

Следующий GIF иллюстрирует результаты выполнения примера макроса.

При выполнении макроса активным листом является Sheet5. Как и ожидалось, Excel активирует первый рабочий лист (Sheet1).

# 6: Обратитесь к листу по имени

Код VBA для ссылки на лист по имени

Для обратитесь к листу по его имени с VBA , используйте ссылку на объект со следующей структурой:

Рабочая тетрадь.Листы ("SheetName")
 

Процесс обращения к листу по имени

Чтобы обратиться к листу по его имени с VBA , выполните следующие действия:

  1. Определите рабочую книгу, содержащую лист (Workbook).
  2. Определите лист по его имени (Sheets («SheetName»)).

Объяснение оператора VBA

Элемент: Workbook

Объект Workbook, представляющий книгу Excel, содержащую лист, на который вы ссылаетесь.

Обычно вы можете работать с одним из следующих свойств, чтобы ссылаться на этот объект Workbook:

  • Application.ActiveWorkbook.
  • Application.ThisWorkbook.
  • Приложение. Рабочие тетради.
Элемент: Sheets («SheetName»)

Свойство Workbook.Sheets возвращает коллекцию Sheets, представляющую все листы в Workbook. Коллекция Sheets, как правило, может содержать:

  • объектов Chart, где каждый объект Chart представляет отдельный лист диаграммы; или
  • Объекты рабочего листа, где каждый объект рабочего листа представляет отдельный рабочий лист.

«SheetName» — это строка, представляющая имя листа, на который вы ссылаетесь, как показано на вкладке листа.Если вы явно объявляете переменную для представления «SheetName», вы обычно можете объявить ее как тип данных String.

Таким образом, Sheets («SheetName») обычно возвращает отдельный объект Chart или Worksheet, представляющий лист диаграммы или рабочий лист с именем SheetName.

Пример макроса для ссылки на лист по имени

Следующий пример макроса активирует (активирует) лист с именем «Chart1» (Sheets («Chart1»)) в книге, где хранится макрос (ThisWorkbook).

Sub referToSheetName ()
    Источник: https://powerspreadsheets. com/
    'активирует лист с именем "Диаграмма1" в этой книге
    'для получения дополнительной информации: https://powerspreadsheets.com/excel-vba-sheets-worksheets/

    'активировать Chart1 в этой книге
    ThisWorkbook.Sheets ("Chart1"). Активировать

Конец подписки
 

Эффекты выполнения примера макроса для ссылки на лист по имени

Следующий GIF иллюстрирует результаты выполнения примера макроса.

При выполнении макроса активным листом является Лист1.Как и ожидалось, Excel активирует Chart1.

# 7: Обратитесь к рабочему листу по имени

Код VBA для ссылки на рабочий лист по имени

Для обратитесь к рабочему листу по его имени с VBA , используйте ссылку на объект со следующей структурой:

Workbook.Worksheets ("WorksheetName")
 

Процесс обращения к рабочему листу по имени

Чтобы обратиться к рабочему листу по его имени с VBA , выполните следующие действия:

  1. Определите рабочую книгу, содержащую рабочий лист (Workbook).
  2. Определите рабочий лист по его имени (Worksheets («WorksheetName»)).

Объяснение оператора VBA

Элемент: Workbook

Объект Workbook, представляющий книгу Excel, содержащую рабочий лист, на который вы ссылаетесь.

Для ссылки на этот объект Workbook обычно можно работать с одним из следующих свойств:

  • Application.ActiveWorkbook.
  • Application.ThisWorkbook.
  • Приложение. Рабочие тетради.
Элемент: Рабочие листы («Имя рабочего листа»)

Рабочая тетрадь.Свойство Worksheets возвращает коллекцию Sheets, представляющую все листы в Workbook.

«WorksheetName» — это строка, представляющая имя рабочего листа, на который вы ссылаетесь, как показано на вкладке рабочего листа. Если вы явно объявляете переменную для представления «WorksheetName», вы обычно можете объявить ее как тип данных String.

Таким образом, Worksheets («WorksheetName») возвращает отдельный объект Worksheet, представляющий рабочий лист, имя которого — WorksheetName.

Пример макроса для ссылки на рабочий лист по имени

Следующий пример макроса активирует (активирует) рабочий лист с именем «Sheet1» (Worksheets («Sheet1»)) в книге, где хранится макрос (ThisWorkbook).

Sub referToWorksheetName ()
    Источник: https://powerspreadsheets.com/
    'активирует лист с именем "Sheet1" в этой книге
    'для получения дополнительной информации: https://powerspreadsheets.com/excel-vba-sheets-worksheets/

    'активировать Sheet1 в этой книге
    ThisWorkbook.Worksheets ("Sheet1"). Активировать

Конец подписки
 

Эффекты выполнения примера макроса для ссылки на рабочий лист по имени

Следующий GIF иллюстрирует результаты выполнения примера макроса.

При выполнении макроса активным листом является Chart1.Как и ожидалось, Excel активирует Sheet1.

# 8: Обратитесь к листу по кодовому имени

Код VBA для ссылки на лист по кодовому имени

Для обратитесь к листу по его кодовому имени с VBA , используйте кодовое имя листа:

SheetCodeName
 

Процесс обращения к листу по кодовому имени

Чтобы обращался к листу по его кодовому имени с VBA , используйте кодовое имя листа.

Объяснение оператора VBA

Элемент: SheetCodeName

SheetCodeName — это кодовое имя листа, на который вы ссылаетесь.

Вы можете использовать кодовое имя листа вместо ссылки на объект (например, те, которые я объясняю в других разделах этого руководства по VBA), возвращая объект диаграммы или листа, на который вы ссылаетесь.

Пример макроса для ссылки на лист по кодовому имени

Следующий пример макроса активирует (активировать) рабочий лист с кодовым именем Sheet1 (Sheet1).

Sub referToSheetCodeName ()
    Источник: https://powerspreadsheets.com/
    'активирует Sheet1 в этой книге
    'для получения дополнительной информации: https: // powerspreadsheets. com / excel-vba-sheet-worksheets /

    'активировать Sheet1 в этой книге
    Sheet1.Activate

Конец подписки
 

Эффекты выполнения примера макроса для ссылки на лист по кодовому имени

Следующий GIF иллюстрирует результаты выполнения примера макроса.

При выполнении макроса активным листом является Sheet5. Как и ожидалось, Excel активирует Sheet1 (имя и кодовое имя — Sheet1).

# 9: Ссылка на несколько листов

Код VBA для ссылки на несколько листов

Для ссылки на несколько листов с VBA используйте ссылку на объект со следующей структурой:

Рабочая тетрадь.Листы (массив (SheetList))
 

Процесс обращения к нескольким листам

Чтобы обратиться к нескольким листам с VBA, выполните следующие действия:

  1. Определите рабочую книгу, содержащую листы (Workbook).
  2. Получите массив с индексными номерами или именами листов, на которые вы ссылаетесь (Array (SheetList)).
  3. Определите листы (Sheets (Array (SheetList))).

Объяснение оператора VBA

Элемент: Workbook

Объект Workbook, представляющий книгу Excel, содержащую листы, на которые вы ссылаетесь.

Для ссылки на этот объект Workbook обычно можно работать с одним из следующих свойств:

  • Application.ActiveWorkbook.
  • Application.ThisWorkbook.
  • Приложение. Рабочие тетради.
Элемент: Sheets (Array (SheetList))

Свойство Workbook.Sheets возвращает коллекцию Sheets, представляющую все листы в Workbook. Коллекция Sheets, как правило, может содержать:

  • объектов Chart, где каждый объект Chart представляет отдельный лист диаграммы; или
  • Объекты рабочего листа, где каждый объект рабочего листа представляет отдельный рабочий лист.

Функция Array (Array (SheetList)) возвращает вариант, содержащий массив с номерами индексов или именами листов, на которые вы ссылаетесь.

SheetList — это список аргументов функции Array, который содержит разделенный запятыми список значений, которые вы назначаете каждому из элементов в массиве, возвращаемом Array. При обращении к нескольким листам вы обычно можете определить конкретные объекты в коллекции листов, с которыми вы работаете, используя соответствующий номер индекса или имя листа, как показано ниже:

  • Номер индекса представляет положение листа на панели вкладок Рабочей книги. , слева направо.Для этих целей в подсчет обычно включаются:
    • скрытых листа; и
    • Как листы диаграмм, так и рабочие листы.
  • Имя листа отображается на вкладке листа.

Таким образом, Sheets (Array (SheetList)) представляет собой листы диаграмм или рабочие листы, которые вы указываете в SheetList.

Пример макроса для ссылки на несколько листов

Следующий пример макроса перемещает (Move) первый лист, лист с именем «Sheet3» и лист с именем «Chart1» (Sheets (Array (1, «Sheet3», «Chart1» ))) в книге, где хранится макрос (ThisWorkbook), до конца книги (After: = ThisWorkbook.Таблицы (ThisWorkbook.Sheets.Count)).

Sub referToSeveralSheets ()
    Источник: https://powerspreadsheets.com/
    'перемещает несколько листов в конец книги
    'для получения дополнительной информации: https://powerspreadsheets.com/excel-vba-sheets-worksheets/

    'переместите первый лист "Sheet3" и "Chart1" в конец этой книги.
    ThisWorkbook.Sheets (Array (1, «Sheet3», «Chart1»)). Переместить после: = ThisWorkbook.Sheets (ThisWorkbook.Sheets.Count)

Конец подписки
 

Эффекты выполнения примера макроса для ссылки на несколько листов

Следующий GIF иллюстрирует результаты выполнения примера макроса.Как и ожидалось, Sheet1 (первый лист), Sheet3 и Chart1 перемещаются в конец книги.

# 10: Обратитесь к нескольким рабочим листам

Код VBA для ссылки на несколько рабочих листов

К обратитесь к нескольким рабочим листам с VBA , используйте ссылку на объект со следующей структурой:

Workbook. Worksheets (массив (WorksheetList))
 

Процесс обращения к нескольким рабочим листам

Чтобы обратиться к нескольким рабочим листам с VBA , выполните следующие действия:

  1. Определите рабочую книгу, содержащую рабочие листы (Workbook).
  2. Получите массив с номерами индексов или именами листов, на которые вы ссылаетесь (Array (WorksheetList)).
  3. Определите рабочие листы (Sheets (Array (WorksheetList))).

Объяснение оператора VBA

Элемент: Workbook

Объект Workbook, представляющий книгу Excel, содержащую листы, на которые вы ссылаетесь.

Для ссылки на этот объект Workbook обычно можно работать с одним из следующих свойств:

  • Application.ActiveWorkbook.
  • Application.ThisWorkbook.
  • Приложение. Рабочие тетради.
Элемент: Worksheets (Array (WorksheetList))

Свойство Workbook.Worksheets возвращает коллекцию Sheets, представляющую все листы в Workbook.

Функция Array (Array (WorksheetList)) возвращает вариант, содержащий массив с номерами индексов или именами листов, на которые вы ссылаетесь.

WorksheetList — это список аргументов функции Array, который содержит разделенный запятыми список значений, которые вы назначаете каждому из элементов в массиве, возвращаемом Array.Обращаясь к нескольким рабочим листам, вы обычно можете идентифицировать конкретные объекты в коллекции Worksheets, с которыми вы работаете, используя соответствующий номер индекса или имя листа, как показано ниже:

  • Номер индекса представляет положение рабочего листа на панели вкладок Workbook , слева направо. Для этих целей подсчитывают обычно:
    • Включает скрытые листы; но
    • Не включает листы диаграмм.
  • Имя рабочего листа отображается на вкладке рабочего листа.

Таким образом, Sheets (Array (WorksheetList)) представляет собой листы диаграмм или рабочие листы, которые вы указываете в WorksheetList.

Пример макроса для ссылки на несколько листов

Следующий пример макроса перемещает (перемещает) рабочие листы с именами «Sheet1», «Sheet2» и «Sheet3» (Worksheets (Array («Sheet1», «Sheet2», «Sheet3») )) в книге, где хранится макрос (ThisWorkbook) после последних листов в книге (After: = ThisWorkbook.Worksheets (ThisWorkbook.Worksheets.Считать)).

Sub referToSeveralWorksheets ()
    Источник: https://powerspreadsheets.com/
    'перемещает несколько листов после последнего листа в этой книге
    'для получения дополнительной информации: https://powerspreadsheets.com/excel-vba-sheets-worksheets/

    'переместить "Sheet1", "Sheet2" и "Sheet3" после последнего рабочего листа в этой книге.
    ThisWorkbook.Worksheets (Array ("Sheet1", "Sheet2", "Sheet3")). Переместить после: = ThisWorkbook.Worksheets (ThisWorkbook.Worksheets.Count)

Конец подписки
 

Эффекты выполнения примера макроса для ссылки на несколько рабочих листов

Следующий GIF иллюстрирует результаты выполнения примера макроса.Как и ожидалось, Sheet1, Sheet2 и Sheet3 перемещаются после последнего рабочего листа в книге (Sheet5).

# 11: Перебрать все листы в книге с помощью For Each… Next

Код VBA для циклического перебора всех листов в книге с помощью For Each… Next

To перебрать все листы в книге с For Each… Следующий цикл VBA , используйте макрос со следующей структурой оператора:

Для каждого листа в книге.
    Заявления
Следующий лист
 

Переберите все листы в книге с помощью For Each… Next

В переберите все листы в книге с For Each… Далее цикл VBA выполните следующие действия:

  1. Определите рабочую книгу, содержащую листы ( Рабочая тетрадь).
  2. Определите коллекцию листов, представляющую все листы в книге (листы).
  3. Используйте объектную переменную для перебора листов в книге (листе).
  4. Выполнить набор операторов для каждого листа в книге.

Объяснение оператора VBA

Строки 1 и 3: для каждого листа в Workbook.Sheets | Следующий лист
Позиция: Для каждого… В… | Next…

Оператор For Each… Next повторяет операторы для каждого листа в рабочей книге.Листы.

Элемент: Лист

Переменная объекта, используемая для итерации листов в книге.

Если вы явно объявляете объектную переменную для представления Sheet, вы обычно можете объявить ее как тип данных Variant или Object.

Элемент: Workbook.Sheets

Коллекция листов, через которую проходит оператор For Each… Next.

Workbook — это объект Workbook, представляющий книгу Excel, содержащую листы, которые вы просматриваете.

Обычно вы можете работать с одним из следующих свойств, чтобы ссылаться на этот объект Workbook:

  • Application.ActiveWorkbook.
  • Application.ThisWorkbook.
  • Приложение. Рабочие тетради.

Свойство Workbook.Sheets возвращает коллекцию Sheets, представляющую все листы в Workbook. Коллекция Sheets, как правило, может содержать:

  • объектов Chart, где каждый объект Chart представляет отдельный лист диаграммы; или
  • Объекты рабочего листа, где каждый объект рабочего листа представляет отдельный рабочий лист.

Следовательно, для каждого… Далее выполняется цикл по всем листам в Рабочей книге.

Строка № 2: Заявления

Заявления, которые выполняются для каждого листа в Workbook.Sheets.

Пример макроса для перебора всех листов в книге с помощью For Each… Next

Следующий пример макроса:

  1. Перебирает каждый лист в книге, где хранится макрос (для каждого iSheet в ThisWorkbook.Sheets | Next iSheet) .
  2. Отображает окно сообщения (MsgBox) с именем (Name) текущего листа (iSheet).
Sub loopThroughAllSheetsForEachNext ()
    'источник: https: // powerspreadsheets.com /
    'просматривает все листы в этой книге и отображает окно сообщения с именем каждого листа
    'для получения дополнительной информации: https://powerspreadsheets. com/excel-vba-sheets-worksheets/

    'объявить переменную для перебора всех листов
    Развернуть iSheet как объект

    'просмотреть все листы в этой книге
    Для каждого iSheet в ThisWorkbook.Sheets

        'отобразить окно сообщения с именем текущего листа
        MsgBox iSheet.Name

    Следующий iSheet

Конец подписки
 

Эффекты выполнения примера макроса для циклического перебора всех листов в книге с помощью For Each… Next

Следующий GIF иллюстрирует результаты выполнения примера макроса.Как и ожидалось, Excel отображает окно сообщения с именем каждого листа (как рабочих листов, так и листов диаграмм) в книге.

# 12: Перебрать все рабочие листы в книге с помощью For Each… Next

Код VBA для циклического перебора всех рабочих листов в рабочей книге с помощью For Each… Next

To перебрать все рабочие листы в рабочей книге с For Each… Следующий цикл VBA , используйте макрос со следующей структурой оператора:

Для каждого листа в книге.Рабочие листы
    Заявления
Следующий рабочий лист
 

Выполните цикл по всем листам в книге с помощью For Each… Next

В переберите все листы в книге с помощью цикла For Each… Next VBA , выполните следующие действия:

  1. Определите рабочую книгу, содержащую рабочие листы ( Рабочая тетрадь).
  2. Определите коллекцию листов, представляющую все рабочие листы в Рабочей книге (Worksheets).
  3. Используйте объектную переменную для перебора листов в Рабочей книге (Worksheet).
  4. Выполните набор операторов для каждого рабочего листа в Рабочей книге.

Объяснение оператора VBA

Строки №1 и №3: для каждого рабочего листа в Workbook.Worksheets | Следующая таблица
Пункт: Для каждого… в… | Next…

Оператор For Each… Next повторяет операторы для каждого рабочего листа в Workbook.Worksheets.

Элемент: Рабочий лист

Переменная объекта, используемая для перебора рабочих листов в Рабочей книге.

Если вы явно объявляете объектную переменную для представления Worksheet, вы обычно можете объявить ее как тип данных объекта Worksheet.

Элемент: Workbook.Worksheets

Коллекция листов, через которую проходит оператор For Each… Next.

Workbook — это объект Workbook, представляющий книгу Excel, содержащую листы, которые вы просматриваете.

Для ссылки на этот объект Workbook обычно можно работать с одним из следующих свойств:

  • Application.ActiveWorkbook.
  • Application.ThisWorkbook.
  • Приложение. Рабочие тетради.

Рабочая тетрадь.Свойство Worksheets возвращает коллекцию Sheets, представляющую все листы в Workbook.

Следовательно, For Each… Next выполняет цикл по всем листам в Рабочей книге.

Строка № 2: Заявления

Заявления, которые выполняются для каждого рабочего листа в Рабочей книге.

Пример макроса для прокрутки всех листов в книге с помощью For Each… Next

Следующий пример макроса:

  1. Перебирает каждый рабочий лист в книге, где хранится макрос (для каждого iWorksheet в ThisWorkbook.Рабочие листы | Следующий iWorksheet).
  2. Отображает окно сообщения (MsgBox) с именем (Name) текущего листа (iSheet).
Sub loopThroughAllWorksheetsForEachNext ()
    Источник: https://powerspreadsheets.com/
    'просматривает все листы в этой книге и отображает окно сообщения с именем каждого листа
    'для получения дополнительной информации: https://powerspreadsheets.com/excel-vba-sheets-worksheets/

    'объявить переменную для перебора всех листов
    Dim iWorksheet как рабочий лист

    'просмотреть все листы в этой книге
    Для каждого iWorksheet в ThisWorkbook.Рабочие листы

        'отобразить окно сообщения с именем текущего рабочего листа
        MsgBox iWorksheet.Name

    Следующий iWorksheet

Конец подписки
 

Эффекты выполнения примера макроса для циклического перебора всех листов в книге с помощью For Each… Next

Следующий GIF иллюстрирует результаты выполнения примера макроса. Как и ожидалось, Excel отображает окно сообщения с именем каждого листа в книге.

# 13: Перебрать все листы в книге с помощью кода For… Next

VBA для циклического перебора всех листов в книге с помощью For… Next

To перебрать все листы в книге с помощью цикла For… Next VBA , используйте макрос со следующей структурой оператора:

Для счетчика = 1 в рабочую книгу.Sheets.Count
    Заявления
Следующий счетчик
 

Процесс для перебора всех листов в книге с помощью For… Next

Для перебрать все листы в книге с помощью цикла For… Next VBA , выполните следующие действия:

  1. Определите рабочую книгу, содержащую листы (Workbook) .
  2. Определите коллекцию листов, представляющую все листы в книге (листы).
  3. Подсчитайте количество листов в коллекции листов (Счетчик).
  4. Выполнить набор операторов количество раз, равное количеству листов в книге (для счетчика = 1 в книгу.Таблицы.Счетчик).

Объяснение оператора VBA

Строки №1 и №3: Для Counter = 1 To Workbook.Sheets.Count | Следующий счетчик
Товар: Для… К… | Next…

Оператор For … Next повторяет операторы столько раз, сколько листов в Рабочей книге.

Элемент: Счетчик

Числовая переменная, используемая как счетчик цикла. Если вы явно объявляете Counter, вы обычно можете объявить его как тип данных Long.

Элемент: = 1

Начальное значение счетчика.

Элемент: Workbook.Sheets.Count

Конечное значение счетчика, равное количеству листов в книге.

Workbook — это объект Workbook, представляющий книгу Excel, содержащую листы, которые вы просматриваете.

Для ссылки на этот объект Workbook обычно можно работать с одним из следующих свойств:

  • Application.ActiveWorkbook.
  • Application.ThisWorkbook.
  • Приложение. Рабочие тетради.

Рабочая тетрадь. Свойство Sheets возвращает коллекцию Sheets, представляющую все листы в Workbook. Коллекция Sheets, как правило, может содержать:

  • объектов Chart, где каждый объект Chart представляет отдельный лист диаграммы; или
  • Объекты рабочего листа, где каждый объект рабочего листа представляет отдельный рабочий лист.

Свойство Sheets.Count возвращает количество объектов в коллекции Sheets.

Следовательно:

  • Workbook.Sheets.Count возвращает количество листов в книге; и
  • For… Next просматривает все листы в книге (от счетчика = 1 до книги.Таблицы.Счетчик).
Строка № 2: Заявления

Заявления, которые выполняются столько раз, сколько листов в Рабочей книге.

Пример макроса для перебора всех листов в книге с помощью For… Next

Следующий пример макроса:

  1. Перебирает каждый лист в книге, где хранится макрос (для iCounter = 1 To ThisWorkbook.Sheets.Count | Далее iCounter).
  2. Отображает окно сообщения (MsgBox) с именем (Name) текущего листа (ThisWorkbook.Таблицы (iCounter)).
Sub loopThroughAllSheetsForNext ()
    Источник: https://powerspreadsheets.com/
    'просматривает все листы в этой книге и отображает окно сообщения для каждого имени листа
    'для получения дополнительной информации: https://powerspreadsheets.com/excel-vba-sheets-worksheets/

    'объявить переменную для удержания счетчика цикла
    Dim iCounter до тех пор, пока

    'просмотреть все листы в этой книге
    Для iCounter = 1 To ThisWorkbook.Sheets.Count

        'отобразить окно сообщения с именем текущего листа
        MsgBox ThisWorkbook.Таблицы (iCounter) .Name

    Следующий iCounter

Конец подписки
 

Эффекты выполнения примера макроса для циклического перебора всех листов в книге с помощью For… Next

Следующий GIF иллюстрирует результаты выполнения примера макроса. Как и ожидалось, Excel отображает окно сообщения с именем каждого листа (как рабочих листов, так и листов диаграмм) в книге.

# 14: Перебрать все рабочие листы в книге с помощью For… Next

код VBA для циклического перебора всех рабочих листов в рабочей книге с помощью For… Next

To перебрать все рабочие листы в рабочей книге с помощью цикла For… Next VBA , используйте макрос со следующей структурой оператора:

Для счетчика = 1 в рабочую книгу.Worksheets.Count
    Заявления
Следующий счетчик
 

Процесс для циклического перебора всех листов в книге с помощью For… Next

К перебрать все рабочие листы в книге с помощью цикла For… Next VBA , выполните следующие действия:

  1. Определите рабочую книгу, содержащую рабочие листы (Workbook) .
  2. Определите коллекцию листов, представляющую все рабочие листы в Рабочей книге (Worksheets).
  3. Подсчитайте количество листов в коллекции листов (Счетчик).
  4. Выполнить набор операторов количество раз, равное количеству листов в книге (для счетчика = 1 в книгу.Рабочие листы.Счетчик).

Объяснение оператора VBA

Строки №1 и №3: For Counter = 1 To Workbook.Worksheets.Count | Следующий счетчик
Товар: Для… К… | Next…

Оператор For … Next повторяет операторы столько раз, сколько рабочих листов в Workbook.

Элемент: Счетчик

Числовая переменная, используемая как счетчик цикла. Если вы явно объявляете Counter, вы обычно можете объявить его как тип данных Long.

Элемент: = 1

Начальное значение счетчика.

Элемент: Workbook.Worksheets.Count

Конечное значение счетчика, равное количеству листов в Workbook.

Workbook — это объект Workbook, представляющий книгу Excel, содержащую листы, которые вы просматриваете.

Для ссылки на этот объект Workbook обычно можно работать с одним из следующих свойств:

  • Application.ActiveWorkbook.
  • Application.ThisWorkbook.
  • Приложение. Рабочие тетради.

Рабочая тетрадь.Свойство Worksheets возвращает коллекцию Sheets, представляющую все листы в Workbook.

Свойство Worksheets.Count возвращает количество объектов в коллекции Sheets, возвращаемое свойством Worksheets.

Следовательно:

  • Workbook.Worksheets.Count возвращает количество рабочих листов в Workbook; и
  • For… Next проходит по всем листам в Workbook (от Counter = 1 до Workbook.Worksheets.Count).
Строка № 2: Заявления

Заявления, которые выполняются столько раз, сколько рабочих листов в Рабочей книге.

Пример макроса для циклического перебора всех листов в книге с помощью For… Next

Следующий пример макроса:

  1. Перебирает каждый рабочий лист в книге, где хранится макрос (для iCounter = 1 To ThisWorkbook.Worksheets.Count | Далее iCounter).
  2. Отображает окно сообщения (MsgBox) с именем (Name) текущего рабочего листа (ThisWorkbook.Worksheets (iCounter)).
Sub loopThroughAllWorksheetsForNext ()
    'источник: https: // powerspreadsheets.com /
    'просматривает все листы в этой книге и отображает окно сообщения с именем каждого листа
    'для получения дополнительной информации: https://powerspreadsheets.com/excel-vba-sheets-worksheets/

    'объявить переменную для удержания счетчика цикла
    Dim iCounter до тех пор, пока

    'просмотреть все листы в этой книге
    Для iCounter = 1 To ThisWorkbook.Worksheets.Count

        'отобразить окно сообщения с именем текущего рабочего листа
        MsgBox ThisWorkbook.Worksheets (iCounter) .Name

    Следующий iCounter

Конец подписки
 

Эффекты выполнения примера макроса для циклического перебора всех листов в книге с помощью For… Next

Следующий GIF иллюстрирует результаты выполнения примера макроса.Как и ожидалось, Excel отображает окно сообщения с именем каждого листа в книге.

# 15: Перебрать все листы в обратном порядке

Код VBA для перебора всех листов в обратном порядке

Чтобы перебрать все листы в книге в обратном порядке с VBA , используйте макрос со следующим структура выписки:

Для Counter = Workbook. Sheets.Count To 1 Step -1
    Заявления
Следующий счетчик
 

Перебрать все листы в обратном порядке

Чтобы перебрал все листы в книге в обратном порядке с помощью VBA , выполните следующие действия:

  1. Определите рабочую книгу, содержащую листы (Workbook).
  2. Определите коллекцию листов, представляющую все листы в книге (листы).
  3. Подсчитайте количество листов в коллекции листов (Счетчик).
  4. Выполнить набор операторов количество раз, равное количеству листов в книге, при этом уточняя, что цикл выполняется в обратном порядке (для Counter = Workbook.Sheets.Count To 1 Step -1).

Объяснение оператора VBA

Строки №1 и №3: Для Counter = Workbook.Sheets.Count To 1 Step -1 | Следующий счетчик
Позиция: Для… Кому….| Next…

Оператор For … Next повторяет операторы столько раз, сколько рабочих листов в Workbook.

Элемент: Счетчик

Числовая переменная, используемая как счетчик цикла. Если вы явно объявляете Counter, вы обычно можете объявить его как тип данных Long.

Item: = Workbook.Sheets.Count

Начальное значение счетчика, которое равно количеству листов в книге.

Workbook — это объект Workbook, представляющий книгу Excel, содержащую листы, которые вы просматриваете.

Для ссылки на этот объект Workbook обычно можно работать с одним из следующих свойств:

  • Application.ActiveWorkbook.
  • Application.ThisWorkbook.
  • Приложение. Рабочие тетради.

Свойство Workbook.Sheets возвращает коллекцию Sheets, представляющую все листы в Workbook. Коллекция Sheets, как правило, может содержать:

  • объектов Chart, где каждый объект Chart представляет отдельный лист диаграммы; или
  • Объекты рабочего листа, где каждый объект рабочего листа представляет отдельный рабочий лист.

Свойство Sheets.Count возвращает количество объектов в коллекции Sheets. Таким образом, Workbook.Sheets.Count возвращает количество листов в книге.

Артикул: 1

Конечное значение счетчика.

Элемент: Шаг -1

Счетчик количества изменяет каждую итерацию цикла.

При просмотре всех листов в обратном порядке:

  • Начальное значение счетчика равно количеству листов в книге (Workbook.Sheets.Count).
  • Конечное значение счетчика — 1.
  • Счетчик уменьшается на 1 каждую итерацию.

Следовательно, For… Next выполняет цикл по всем листам в книге в обратном порядке (From Counter = Workbook.Sheets.Count To 1 Step -1).

Строка № 2: Заявления

Заявления, которые выполняются столько раз, сколько листов в Рабочей книге.

Пример макроса для перебора всех листов в обратном порядке

Следующий пример макроса:

  1. Перебирает каждый лист в книге, где хранится макрос, в обратном порядке (для iCounter = ThisWorkbook.Sheets.Count To 1 Шаг -1 | Далее iCounter).
  2. Отображает окно сообщения (MsgBox) с именем (Name) текущего листа (ThisWorkbook.Sheets (iCounter)).
Sub loopThroughAllSheetsBackwards ()
    Источник: https://powerspreadsheets.com/
    'перебирает все листы в этой книге (в обратном порядке) и отображает окно сообщения с именем каждого листа
    'для получения дополнительной информации: https://powerspreadsheets.com/excel-vba-sheets-worksheets/

    'объявить переменную для удержания счетчика цикла
    Dim iCounter до тех пор, пока

    'просмотреть все листы в этой книге (в обратном порядке)
    Для iCounter = ThisWorkbook.Sheets.Count To 1 Step -1

        'отобразить окно сообщения с именем текущего листа
        MsgBox ThisWorkbook.Sheets (iCounter) .Name

    Следующий iCounter

Конец подписки
 

Эффекты выполнения примера макроса для перебора всех листов в обратном порядке

Следующий GIF иллюстрирует результаты выполнения примера макроса. Как и ожидалось, Excel отображает окно сообщения с именем каждого листа (как рабочих листов, так и листов диаграмм) в книге в обратном порядке.

# 16: Цикл через все рабочие листы в обратном порядке

Код VBA для цикла по всем рабочим листам в обратном порядке

Чтобы пройти через все рабочие листы в книге в обратном порядке с VBA , используйте макрос со следующим структура выписки:

Для Counter = Workbook.Worksheets.Count To 1 Step -1
    Заявления
Следующий счетчик
 

Переберите все рабочие листы в обратном порядке.

Чтобы перебрал все рабочие листы в книге в обратном порядке с помощью VBA , выполните следующие действия:

  1. Определите рабочую книгу, содержащую рабочие листы (Workbook).
  2. Определите коллекцию листов, представляющую все рабочие листы в Рабочей книге (Worksheets).
  3. Подсчитайте количество листов в коллекции листов (Счетчик).
  4. Выполнить набор операторов количество раз, равное количеству рабочих листов в Рабочей книге, при этом уточняя, что цикл выполняется в обратном порядке (для Counter = Workbook.Worksheets.Count To 1 Step -1).

Объяснение оператора VBA

Строки №1 и №3: For Counter = ThisWorkbook.Worksheets.Count To 1 Step -1 | Следующий счетчик
Товар: Для… К… | Next…

Оператор For … Next повторяет операторы столько раз, сколько рабочих листов в Workbook.

Элемент: Счетчик

Числовая переменная, используемая как счетчик цикла. Если вы явно объявляете Counter, вы обычно можете объявить его как тип данных Long.

Item: = Workbook.Worksheets.Count

Начальное значение счетчика, которое равно количеству рабочих листов в Workbook.

Workbook — это объект Workbook, представляющий книгу Excel, содержащую листы, которые вы просматриваете.

Обычно вы можете работать с одним из следующих свойств, чтобы ссылаться на этот объект Workbook:

  • Application.ActiveWorkbook.
  • Application.ThisWorkbook.
  • Приложение. Рабочие тетради.

Свойство Workbook. Worksheets возвращает коллекцию Sheets, представляющую все листы в Workbook.

Свойство Worksheets.Count возвращает количество объектов в коллекции Sheets, возвращаемое свойством Worksheets. Следовательно, Workbook.Worksheets.Count возвращает количество листов в Workbook.

Артикул: 1

Конечное значение счетчика.

Элемент: Шаг -1

Счетчик количества изменяет каждую итерацию цикла.

При просмотре всех листов в обратном порядке:

  • Начальное значение счетчика равно количеству листов в Рабочей книге (Workbook.Worksheets.Count).
  • Конечное значение счетчика 1.
  • Счетчик уменьшается на 1 каждую итерацию.

Следовательно, For… Next выполняет цикл по всем рабочим листам в Workbook в обратном порядке (From Counter = Workbook.Worksheets.Count To 1 Step -1).

Строка № 2: Заявления

Заявления, которые выполняются столько раз, сколько рабочих листов в Рабочей книге.

Пример макроса для перебора всех листов в обратном порядке

Следующий пример макроса:

  1. Перебирает каждый рабочий лист в книге, где хранится макрос, в обратном порядке (для iCounter = ThisWorkbook.Worksheets.Count To 1 Step — 1 | Далее iCounter).
  2. Отображает окно сообщения (MsgBox) с именем (Name) текущего рабочего листа (ThisWorkbook.Worksheets (iCounter)).
 Sub loopThroughAllWorksheetsBackwards ()
'источник: https: // powerspreadsheets.com /
'просматривает все листы в этой книге (в обратном порядке) и отображает окно сообщения с именем каждого рабочего листа
'для получения дополнительной информации: https://powerspreadsheets.com/excel-vba-sheets-worksheets/

'объявить переменную для удержания счетчика цикла
Dim iCounter до тех пор, пока

'просмотреть все листы в этой книге (в обратном порядке)
Для iCounter = ThisWorkbook.Worksheets.Count To 1 Step -1

'отобразить окно сообщения с именем текущего рабочего листа
MsgBox ThisWorkbook.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *