Команды vba excel
Open Notes
Обо всём, что мне интересно
Полезные команды VBA
Пополняемый список полезных отрывков кода VBA для выполнения часто востребованных действий в MS Excel.
Служебные команды для ускорения скорости выполнения макроса:
‘Отключение отображения выполняемых действий Application.ScreenUpdating = False ‘Предотвращение появления предупреждающих сообщений Application.DisplayAlerts = False ‘Предотвращение появления предупреждения об обновлении связей данных Application.AskToUpdateLinks = False ‘Очистка буфера обмена Application.CutCopyMode = False
Проверка имени пользователя, запустившего макрос:
Чтобы проверить, какой пользователь открыл книгу Excel можно использовать один из следующих вариантов:
If Application.UserName = «Имя_автора_документа» Then .
If Environ(«username») = «user» Then .
Поиск последней строки таблицы:
Set myWSheet = ThisWorkbook.Sheets(«Имя_листа») With myWSheet ‘Определение индекса последней строки таблицы lastRow = .Cells(Rows.Count, 1).End(xlUp).Row ‘Определение значения в ячейки последней строке столбца A lastARow = .Range(«A» & lastRow).Value End With
Замена формулы на значение:
Добавление нового листа с именем после всех существующих:
Worksheets.Add (After:=Worksheets(Worksheets.Count)).Name = «Имя_листа»
Как узнать последний день предыдущего месяца:
LastMonthDay = DateAdd(«d», -1, DateSerial(Year(dtDate), Month(dtDate), 1))
Определение оставшихся дней месяца:
dToEndOfMonth = DateDiff(«d», dFrom, DateAdd(«d», -1, _ DateSerial(Year(dFrom), Month(dFrom) + 1, 1)))
Номер текущего дня в неделе (воскресенье — первый день):
DayOfWeek = DatePart(«w», dToday)
Создание нового файла из текущего:
pathNewBook = «C:Temp» nameNewBook = «Имя_нового_файла.xls» Workbooks.Add ActiveWorkbook.SaveAs Filename:=pathNewBook & nameNewBook ActiveWorkbook.Close True
Сохранить текущий файл в формате CSV
Чтобы при сохранении файла в формате CSV, вместо запятых в качестве разделителя использовалась точка с запятой, следует использовать подобный код:
ActiveWorkbook.SaveAs FileName:=»Name.csv», FileFormat:=xlCSV, _ CreateBackup:=False, Local:=True ActiveWorkbook.Saved = True ActiveWorkbook.Close True
Копирование данных из одного файла в другой:
wbPath = «C:Temp» wbName = «Имя_файла_откуда_копируем.xls» Workbooks.Open (wbPath & wbName) Set WB = Workbooks(wbName) WB.Sheets(«Лист 1»).Range(«A1:С10»).Copy Sheet(«Лист_в_текущем_файле»).Range(«A2»).PasteSpecial xlPasteValues
Чтобы открыть файл только для чтения, следует использовать:
Workbooks.Open (Filename:=wbPath & wbName, ReadOnly:=True)
Предотвращение ошибки при неудачном поиске значения в таблице:
Set DateRowObj = WB.Sheets(«Имя_листа»).Range(«A:A»)._ Find(What:=dtToAsDate, LookIn:=xlFormulas) If (DateRowObj Is Nothing) Then WB.Close False MsgBox «Данные не найдены.» Else DateRow = DateRowObj.Row ‘Номер строки с искомым значением End If
Как получить имя активной книги Excel без его расширения (без .xls либо без .xlsx):
wbName = Left(ActiveWorkbook.Name, InStrRev(ActiveWorkbook.Name, «.») — 1)
Проверка существования файла:
fPath = «C:Temp» fName = «Файл.txt» If Dir(fPath & fName) = «» Then MsgBox «Файл не найден:» & Chr(13) & fPath & fName Exit Sub End If
Кнопка, скрывающая/разворачивающая часть таблицы:
Private Sub tbVid_Click() Application.ScreenUpdating = False If tbVid Then tbVid.Caption = «Скрыть» ActiveSheet.Rows(«2:29»).Hidden = False Else tbVid.Caption = «Развернуть» ActiveSheet.Rows(«2:29»).Hidden = True End If End Sub
Обновление сводной таблицы:
currPath = ThisWorkbook.Path currWBName = ThisWorkbook.Name ListName.PivotTables(«СводнаяТаблица1»).ChangePivotCache ActiveWorkbook. _ PivotCaches.Create(SourceType:=xlDatabase, SourceData:=currPath & «[» & _ currWBName & «]Лист1!R1C1:R10C5»)
Обращение к элементам Frame:
Замена #ДЕЛ/0! в диапазоне:
Selection.Replace What:=»#DIV/0!», Replacement:=»», LookAt:=xlPart,_ SearchOrder:=xlByRows, MatchCase:=False,_ SearchFormat:=False, ReplaceFormat:=False
Количество строк в отфильтрованной таблице:
Быстро убрать лишние пробелы в диапазоне:
Программно снять защиту с листа:
Работа с диапазоном
Умножить диапазон на число:
ThisWorkbook.Sheets(1).Range(«A1:A10») = _ ThisWorkbook.Sheets(1).Evaluate(«A1:A10» & «*80»)
Добавить ко всем значениям диапазона строку:
ThisWorkbook.Range(«A1:A10»).Value = _ Evaluate(«=»»» & addTxt & «»» & » & ThisWorkbook.Range(«A1:A10»).Address)
Сортировка выбранного столбца в сводной таблице
Col = Selection.Column ‘Номер выбранного столбца ColMax = ActiveSheet.PivotTables(«СводнаяТаблица»).PivotColumnAxis. _ PivotLines.Count If Col — 1 <= ColMax And Col 1 Then ActiveSheet.PivotTables(«СводнаяТаблица»).PivotFields(«Label»).AutoSort _ xlDescending, » «, ActiveSheet.PivotTables(«СводнаяТаблица»). _ PivotColumnAxis.PivotLines(Col — 1), 1 End If
Счетчик времени выполнения процедуры
‘Счётчик, ставится в начале процедуры StartUpdDate = Now ‘Сообщение, выводится в конце процедуры MsgBox «Данные обновлены за » & Fix(1440 * (Now – StartUpdDate)) & » мин. » & 86400 * (Now – StartUpdDate) Mod 60 & » сек.»
Функция транслитерации с русского на английский
Function Translit(Txt As String) As String Txt = Txt Rus = Array(«ий», «ый», «ъе», «ъя», «ъю», _ «ъё», «ье», «ья», «ью», «ьё», «а», «б», «в», «г», _ «д», «е», «ё», «ж», «з», «и», «й», «к», «л», _ «м», «н», «о», «п», «р», «с», «т», «у», «ф», «х», _ «ц», «ч», «ш», «щ», «ъ», «ы», «ь», «э», «ю», «я», _ «ИЙ», «ЫЙ», «ЪЕ», «ЪЯ», «ЪЮ», _ «ЪЁ», «ЬЕ», «ЬЯ», «ЬЮ», «ЬЁ», «А», «Б», «В», «Г», _ «Д», «Е», «Ё», «Ж», «З», «И», «Й», «К», «Л», _ «М», «Н», «О», «П», «Р», «С», «Т», «У», «Ф», «Х», _ «Ц», «Ч», «Ш», «Щ», «Ъ», «Ы», «Ь», «Э», «Ю», «Я», _ » «, «_», «?», _ «a», «b», «c», «d», «e», «f», «g», «h», «i», «j», «k», «l», «m», _ «n», «o», «p», «q», «r», «s», «t», «u», «v», «w», «x», «y», «z», ««», «»») Eng = Array(«y», «y», «ye», «ya», «yu», _ «yo», «ye», «ya», «yu», «yo», «a», «b», «v», «g», _ «d», «e», «yo», «zh», «z», «i», «y», «k», «l», «m», _ «n», «o», «p», «r», «s», «t», «u», «f», «h», «ts», _ «ch», «sh», «sch», «», «y», «», «eh», «u», «ya», _ «Y», «Y», «Ye», «Ya», «Yu», _ «Yo», «Ye», «Ya», «Yu», «Yo», «A», «B», «V», «G», _ «D», «E», «Yo», «Zh», «Z», «I», «Y», «K», «L», «M», _ «N», «O», «P», «R», «S», «T», «U», «F», «H», «Ts», _ «Ch», «Sh», «Sch», «», «Y», «», «Eh», «U», «Ya», _ » «, «_», «?», _ «a», «b», «c», «d», «e», «f», «g», «h», «i», «j», «k», «l», «m», _ «n», «o», «p», «q», «r», «s», «t», «u», «v», «w», «x», «y», «z», «», «») For i = 1 To Len(Txt) с = Mid(Txt, i, 1) flag = 0 For J = 0 To 116 If Rus(J) = с Then outchr = Eng(J) flag = 1 Exit For End If Next J If flag Then outstr = outstr & outchr Else outstr = outstr & с Next i Translit = outstr End Function
Поиск файлов в папке
Dim strDirPath, strMaskSearch, strFileName as String strDirPath = «C:/test/» ‘Папка поиска strMaskSearch = «*.xls*» ‘Маска поиска ‘Получаем первый файл соответствующий шаблону strFileName = Dir(strDirPath & strMaskSearch) Do While strFileName <> «» ‘До тех пор пока файлы «не закончатся» MsgBox strFileName strFileName = Dir ‘Следующий файл Loop
Список используемых команд VBA Excel
- nikolaevrn
Автор темы
- Не в сети
- Администратор
VarName — любое имя массива, использующее допустимый идентификатор имени;
‘Subscripts’ — размерность массива. В случае если массив является многомерным, то значения, которые определяют размерность массива, разделяются запятыми.
‘Type’ — тип данных в массиве (например, String или Integer).
Примеры правильного объявления массивов:
Dim Array_Var() — динамический массив;
Dim Array_Str (1 To 10) As String — одномерный статический строковый массив определенного размера;
Dim Array_Mult (0 To 5, 0 To 7) As Integer — двумерный статический массив целых чисел,
ReDim — оператор для переопределение размерность массива:
— изменение размерности массива с потерей всех данных
varname — имя существующего массива;
‘SubScripts’ — новое значение размерности массива;
‘Type’ — тип данных в массиве (например, String или Integer).
— изменение размерности массива с сохранением данных
varname — имя существующего массива;
‘SubScripts’ — новое значение размерности массива;
‘Type’ — тип данных в массиве (например, String или Integer).
Array() — позволяет автоматически создать массив нужного размера с необходимой информацией.
ParamArray — аргумент, который представляет собой список значений разделенный запятыми (значения элементов массива).
IsArray () — функция, которая проверяет аргумент (переменную) на принадлежность к массиву. В зависимости от результатов проверки функция возвращает:
— True — если переменная является массивом,
— False — если аргумент не является массивом.
VarName — аргумент, который проверяется на принадлежность к массиву.
Filter() — позволяет на основе одного массива получить другой, отфильтровав в исходном массиве нужные нам элементы.
LBound() — функция, которая определяет индекс самого первого элемента в массиве. В случае применения данной функции к многомерным массивам, дополнительно необходимо указывать какую часть массива необходимо рассматривать.
ArrayName — имя переменной, которая является массивом.
Dimension — целое число, которое отражает определенный к-мерный массив в многомерном массиве. Данный параметр является необязательным и используется в случае рассмотрение многомерных массивов. В случае если параметр Dimension опущен, предполагается значение равное 1.
UBound() — функция, которая определяет индекс самого последнего элемента в массиве (от 0 до . ). В случае применения данной функции к многомерным массивам, дополнительно необходимо указывать какую часть массива необходимо рассматривать.
ArrayName — имя переменной, которая является массивом.
Dimension — целое число, которое отражает определенный к-мерный массив в многомерном массиве. Данный параметр является необязательным и используется в случае рассмотрение многомерных массивов. В случае если параметр Dimension опущен, предполагается значение равное 1.
Join() — возможность слить множество строк из массива строк в одну строковую переменную. В качестве разделителя по умолчанию используется пробел, можно указать свой разделитель.
Пример использования:
Dim avArr
avArr = Array(«Первый элемент», «Второй элемент», «3», 4, «Последний»)
‘объединяем все элементы массива с разделителем «-»
MsgBox Join(avArr, «-«)
Split() — обратная функция, разбивающая строку на массив строк . В качестве разделителя по умолчанию используется пробел, можно указать свой разделитель.
Пример использования:
‘инициализируем переменную с типом Variant
‘т.к. затем это будет массив
Dim sStr
‘разбиваем указанный текст массив. Разделитель — «-»
sStr = Split(«Первый элемент-Второй элемент-3-4-Последний», «-«)
‘показываем 3-ий по порядку элемент
MsgBox avArr(2)
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
- nikolaevrn
Автор темы
- Не в сети
- Администратор
- Сообщений: 14
- Репутация: 50
- Спасибо получено: 0
ASC()— эта функция позволяет вернуть числовой код для переданного символа. Например, ASC(«D») вернет 68. Эту функцию удобно использовать для того, чтобы определить следующую или предыдущую букву. Обычно она используется вместе с функцией Chr(), которая производит обратную операцию — возвращает символ по переданному его числовому коду.Варианты этой функции — AscB() и AscW():
AscB() — возвращает только первый байт числового кода для символа.
AscW() — возвращает код для символа в кодировке Unicode
Chr() — возвращает символ по его числовому коду. Может использоваться в паре с функцией Asc(), но чаще всего её применяют, когда нужно вывести служебный символ (например кавычки — «), т.к. кавычки просто так в VBA-коде не ввести(нужно ставить двойные). Я обычно именно эту функцию и использую.
Есть варианты этой функции — ChrB() и ChrW(). Работают аналогично таким же вариантам для функции Asc().
InStr() и InStrRev()— одна из самых популярных функций. Позволяет обнаружить в теле строковой переменной символ или последовательность символов и вернуть их позицию. Если последовательность не обнаружена, то возвращается 0.
Разница функций в том, что InStr() ищет указанное слово от начала строки, а InStrRev() с конца строки
Пример использования:
Dim sStr As String
sStr = «w»
If InStr(1, «Hello, World!», sStr, vbTextCompare) > 0 Then
MsgBox «Искомое слово присутствует!»
Else
MsgBox «Искомое слово отсутствует!»
End If
Left(), Right(), Mid()— возможность взять указанное вами количество символов из существующей строковой переменной слева, справа или из середины соответственно.
Len() — возможность получить число символов в строке. Часто используется с циклами, операциями замены и т.п.
LCase() и UCase() — перевести строку в нижний и верхний регистры соответственно. Часто используется для подготовки значения к сравнению, когда при сравнении регистр не важен (фамилии, названия фирм, городов и т.п.).
LSet() и RSet() — возможность заполнить одну переменную символами другой без изменения ее длины (соответственно слева и справа). Лишние символы обрезаются, на место недостающих подставляются пробелы.
LTrim(), RTrim(), Trim() — возможность убрать пробелы соответственно слева, справа или и слева, и справа.
Replace()— возможность заменить в строке одну последовательность символов на другую.
Space() — получить строку из указанного вами количества пробелов;
Еще одна похожая функция — Spc(), которая используется для форматирования вывода на консоль. Она размножает пробелы с учетом ширины командной строки.
StrComp() — возможность сравнить две строки.
StrConv() — возможность преобразовать строку (в Unicode и обратно, в верхний и нижний регистр, сделать первую букву слов заглавной и т.п.):
В качестве второго параметра параметра могут применяться константы:
vbUpperCase: Преобразует все текстовые символы в ВЕРХНИЙ РЕГИСТР
vbLowerCase: Преобразует все текстовые символы в нижний регистр
vbProperCase: Переводит первый символ каждого слова в Верхний Регистр
*vbWide: Преобразует символы строки из однобайтовых в двухбайтовые
*vbNarrow: Преобразует символы строки из двухбайтовых в однобайтовые
**vbKatakana: Преобразует символы Hiragana в символы Katakana
**vbHiragana: Преобразует символы Katakana в символы Hiragana
***vbUnicode: Преобразует строку в Юникод с помощью кодовой страницы системы по умолчанию
***vbFromUnicode: Преобразует строку из Юникод в кодовую страницу системы по умолчанию
StrReverse() — «перевернуть» строку, разместив ее символы в обратном порядке. Функция работает только начиная от Excel 2000 и выше. Пример использования функции, а так же иные методы переворачивания слова можно посмотреть в этой статье: Как перевернуть слово?
Tab() — еще одна функция, которая используется для форматирования вывода на консоль. Размножает символы табуляции в том количестве, в котором вы укажете. Если никакое количество не указано, просто вставляет символ табуляции. Для вставки символа табуляции в строковое значение можно также использовать константу vbTab.
String() — позволяет получить строку из указанного количества символов (которые опять-таки указываются Вами). Обычно используются для форматирования вывода совместно с функцией Len().
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
VBA-Урок 1. Что такое VBA. Основные понятия.
В данном разделе мы рассмотрим что такое VBA, посколько именно на нем и пишутся макросы.
Что такое VBA?
VBA — язык (расшифровывается как Visual Basic for Application) был разработан компанией Microsoft. Данный язык не является самостоятельным, а предназначен для автоматизации процессов в пакете MS Office. VBA широко используется в Excel, а также в Access, Word и других программах пакета.
VBA — простой язык программирования, которому может научиться любой желающий. Изучив его, вы сможет предоставлять команды Excel, что делать с колонками, строками, значениями в ячейках, перемещать/добавлять/сортировать листы, выводить заранее запрограммированные сообщения, писать свои формулы и функции и т.д. Суть языка заключается в оперировании объектами (что относит его к объектно-ориентированному программированию).
Чтобы работать с VBA кодом, нам нужен редактор, который уже установлен по умолчанию. Вы можете открыть его, нажав комбинацию клавиш » ALT + F11 «.
Объекты (Objects)
Давайте разберем, что же такое объект. Объект — это элемент, структурная частица Excel, а именно: книга, лист, диапазон, ячейка. Данные объекты имеют иерархию, т.е. подчиняются друг другу. Схематично структуру иерархии Excel можно изобразить следующим образом:
Главный объект это Application, что соответствует самой программе Excel. Далее следует Workbooks (книга), Worksheets (лист), Range (диапазон, или отдельная ячейка). Например, чтобы обратиться к ячейке «A1» на листе нам нужно будет прописать следующий путь с учетом иерархии:
Application.Workbooks(«Архив»).Worksheets(«Аркуш1»).Range(«A1»).
Таким образом, мы научились обращаться до наименьшего объекта в Excel — ячейки.
Коллекции (Collections)
В свою очередь объекты имеют «коллекции». Коллекция — это группа объектов одинакового класса. Отдельные элеметы коллекции являются также объектами. Так, объекты Worksheets являются элементами коллекции объекта Worksheet, который содержит также и другие коллекции и объекты:
- ChartObjects (элемент коллекции объекта ChartObject)
- Range
- PageSetup
- PivotTables (элемент коллекции объекта PivotTable).
Свойства (Properties)
Каждый объект имеет свойства . Например, объект Range имеет свойство Value или Formula.
Worksheets(“Sheet1”).Range(“A1”).Value або Worksheets(“Sheet1”).Range(“A1”).Formula
В данном примере, свойство отображает значение, которое введено в ячейку или введенную формулу.
Также, через свойство Formula можно не только получить формулу, но и записать ее:
MsgBox Range(“A1”).Formula — получим сообщение с формулой в ячейке «А1«;
Range(“B12”).Formula = “=2+6*100” — вписываем формулу =2+6*100 в ячейку B12.
Методи (Methods)
Теперь давайте рассмотрим, каким образом мы можем управлять содержимым диапазона или ячейки. Для этого в VBA существуют, так-называемые методы (команды «что сделать»). При написании кода методы отделяются от объекта точкой, например:
Range(«A1»).Select или Cells(1, 1).Select
Данный метод указывает выбрать (Select) ячейку «A1».
Далее, давайте, удалим значение в данной ячейке. Для этого напишем следующий код:
Selection.ClearContents
Здесь программа «берет» то, что мы выделили (Selection) и удаляет его содержимое (ClearContents ).
Команды vba excel
Работа с диапазоном
Умножить диапазон на число:
ThisWorkbook.Sheets(1).Range( «A1:A10» ) = _
ThisWorkbook.Sheets(1).Evaluate( «A1:A10» & «*80» )
Добавить ко всем значениям диапазона строку:
ThisWorkbook.Range( «A1:A10» ).Value = _
Evaluate( «=»»» & addTxt & «»» & » & ThisWorkbook.Range( «A1:A10» ).Address)
Сортировка выбранного столбца в сводной таблице
Col = Selection.Column ‘Номер выбранного столбца
ColMax = ActiveSheet.PivotTables( «СводнаяТаблица» ).PivotColumnAxis. _
If Col — 1 <= ColMax And Col 1 Then
ActiveSheet.PivotTables( «СводнаяТаблица» ).PivotFields( «Label» ).AutoSort _
xlDescending, » » , ActiveSheet.PivotTables( «СводнаяТаблица» ). _
PivotColumnAxis.PivotLines(Col — 1), 1
Счетчик времени выполнения процедуры
‘Счётчик, ставится в начале процедуры
‘Сообщение, выводится в конце процедуры
MsgBox «Данные обновлены за » & Fix(1440 * (Now – StartUpdDate)) & » мин. » & 86400 * (Now – StartUpdDate) Mod 60 & » сек.»
Функция транслитерации с русского на английский
Function Translit(Txt As String ) As String
Rus = Array( «ий» , «ый» , «ъе» , «ъя» , «ъю» , _
«ъё» , «ье» , «ья» , «ью» , «ьё» , «а» , «б» , «в» , «г» , _
«д» , «е» , «ё» , «ж» , «з» , «и» , «й» , «к» , «л» , _
«м» , «н» , «о» , «п» , «р» , «с» , «т» , «у» , «ф» , «х» , _
«ц» , «ч» , «ш» , «щ» , «ъ» , «ы» , «ь» , «э» , «ю» , «я» , _
«ИЙ» , «ЫЙ» , «ЪЕ» , «ЪЯ» , «ЪЮ» , _
«ЪЁ» , «ЬЕ» , «ЬЯ» , «ЬЮ» , «ЬЁ» , «А» , «Б» , «В» , «Г» , _
«Д» , «Е» , «Ё» , «Ж» , «З» , «И» , «Й» , «К» , «Л» , _
«М» , «Н» , «О» , «П» , «Р» , «С» , «Т» , «У» , «Ф» , «Х» , _
«Ц» , «Ч» , «Ш» , «Щ» , «Ъ» , «Ы» , «Ь» , «Э» , «Ю» , «Я» , _
«a» , «b» , «c» , «d» , «e» , «f» , «g» , «h» , «i» , «j» , «k» , «l» , «m» , _
«n» , «o» , «p» , «q» , «r» , «s» , «t» , «u» , «v» , «w» , «x» , «y» , «z» , ««» , «»» )
Eng = Array( «y» , «y» , «ye» , «ya» , «yu» , _
«yo» , «ye» , «ya» , «yu» , «yo» , «a» , «b» , «v» , «g» , _
«d» , «e» , «yo» , «zh» , «z» , «i» , «y» , «k» , «l» , «m» , _
«n» , «o» , «p» , «r» , «s» , «t» , «u» , «f» , «h» , «ts» , _
«ch» , «sh» , «sch» , «» , «y» , «» , «eh» , «u» , «ya» , _
«Y» , «Y» , «Ye» , «Ya» , «Yu» , _
«Yo» , «Ye» , «Ya» , «Yu» , «Yo» , «A» , «B» , «V» , «G» , _
«D» , «E» , «Yo» , «Zh» , «Z» , «I» , «Y» , «K» , «L» , «M» , _
«N» , «O» , «P» , «R» , «S» , «T» , «U» , «F» , «H» , «Ts» , _
«Ch» , «Sh» , «Sch» , «» , «Y» , «» , «Eh» , «U» , «Ya» , _
«a» , «b» , «c» , «d» , «e» , «f» , «g» , «h» , «i» , «j» , «k» , «l» , «m» , _
«n» , «o» , «p» , «q» , «r» , «s» , «t» , «u» , «v» , «w» , «x» , «y» , «z» , «» , «» )
For i = 1 To Len(Txt)
For J = 0 To 116
If Rus(J) = с Then
If flag Then outstr = outstr & outchr Else outstr = outstr & с
Команды vba excel
Знакомство с объектной моделью Excel следует начинать с такого замечательного объекта, как Range . Поскольку любая ячейка — это Range , то без знания, как с этим объектом эффективно взаимодействовать, вам будет затруднительно программировать для Excel. Это очень ладно-скроенный объект. При некоторой сноровке вы найдёте его весьма удобным в эксплуатации.
Что такое объекты?
Мы собираемся изучать объект Range , поэтому пару слов надо сказать, что такое, собственно, » объект «. Всё, что вы наблюдаете в Excel, всё с чем вы работаете — это набор объектов. Например, лист рабочей книги Excel — не что иное, как объект типа WorkSheet . Однотипные объекты объединяют в коллекции себе подобных. Например, листы объединены в коллекцию Sheets . Чтобы не путать друг с другом объекты одного и того же типа, они имеют отличающиеся имена, а также номер индекса в коллекции. Объекты имеют свойства , методы и события .
Свойства — это информация об объекте. Часто эти свойства можно менять, что автоматически влечет изменения внешнего вида объекта или его поведения. Например свойство Visible объекта Worksheet отвечает за видимость листа на экране. Если ему присвоить значение xlSheetHidden (это константа, которая по факту равно нулю), то лист будет скрыт.
Методы — это то, что объект может делать. Например, метод Delete объекта Worksheet удаляет себя из книги. Метод Select делает лист активным.
События — это механизм, при помощи которого вы можете исполнять свой код VBA сразу по факту возникновения того или иного события с вашим объектом. Например, есть возможность выполнять ваш код, как только пользователь сделал текущим определенный лист рабочей книги, либо как только пользователь что-то изменил на этом листе.
Объекты Range
Range это диапазон ячеек. Минимум — одна ячейка, максимум — весь лист, теоретически насчитывающий более 17 миллиардов ячеек (строки 2^20 * столбцы 2^14 = 2^34).
В Excel объявлены глобально и всегда готовы к использованию несколько коллекций, имеющий членами объекты типа Range , либо свойства это же типа. Коллекции глобального объекта Application : Cells , Columns , Rows , а также свойства Range , Selection , ActiveCell , ThisCell .
ActiveCell — активная ячейка текущего листа, ThisCell — если вы написали пользовательскую функцию рабочего листа, то через это свойство вы можете определить какая конкретно ячейка в данный момент пересчитывает вашу функцию. Об остальных перечисленных объектов речь пойдёт ниже.