VBA (ИСПОЛЬЗОВАНИЕ КЛАССОВ И ОБЪЕКТОВ) Ч.1
Что такое «Класс» в VBA
Представьте себе, что мы пишем программу для крупного заказчика и в нашей команде работают несколько разработчиков. И вот мы пишем программу, которая содержит много функций, процедур и переменные. Наш коллега тоже пишет переменные, процедуры и называет их точно также как и мы. В процессе объединения нашего кода мы замечаем это и долго меняем и рефакторим наш код.
Чтобы избежать подобной проблемы было принято выносить все функции и процедуры в отдельный файл. И обращаться к его функциям и процедурам примерно так User.GetAge. Теперь в этом файле программист может называть свои функции и переменные как угодно, ведь корневой файл проще переименовать чем менять все переменные внутри. Т.е. например Вы логику в файле User а коллега в файле Manager и в обоих файлах есть одинаковая функция GetAge, но теперь они не переплетаются. Осталось только научить компилятор воспринимать разные файлы по разному. Поэтому в среде VBA есть файлы классы, которые необходимо добавлять в папку «Class Modules».
Фактически это описание нашей программы в файле. С содержанием функций, процедур и кучи переменных.
Окройте редактор кода. Добавьте класс в проект нажав правой кнопкой мышки на папку Class Modules -> Insert -> Class Module.
Внутри класса напишие функцию.
Public Sub addNewEmployee(Name As String) For i = 1 To Rows.Count If IsEmpty(ThisWorkbook.Sheets(1).Cells(i, 1)) Then ThisWorkbook.Sheets(1).Cells(i, 1) = Name Exit For End If Next i End Sub
Насамом деле это не совсем функция. Дело в том, что когда мы пишем функцию или процедуру внутри класса, то её принятно называть методом.