image

Что такое класс в VBA?

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

В реальной жизни модель (дизайн и функциональные возможности) автомобиля — это класс, а сам автомобиль — объект этого класса. В классе мы определяем, что есть в машине и на что она способна. Например, у машины 4 колеса, 5 передач, рулевое колесо и т. Д. Это атрибуты / свойства.

Мы также определяем, что машина может делать, например, двигаться вперед, назад, поворачивать и т. Д. Это функции класса машины. Объект автомобиля, созданный с использованием класса автомобиля, будет иметь все эти свойства. Если вы определяете автомобиль с 5 колесами, то автомобиль, созданный с использованием этого класса, будет иметь 5 колес. Вы уловили суть.

Хватит теории, теперь давайте посмотрим, как можно использовать модуль класса в VBA.

Использование модуля классов Excel VBA

При работе в VBA вы должны использовать Range («A1»). Select. Диапазон — это предварительно определенный класс в VBA. Выбор — это одна из функций класса Range, которая выбирает указанный диапазон. Точно так же Debug — это класс в VBA, а print и assert — это методы. Рабочие листы, рабочие книги, диапазон и т. Д. — все это классы VBA, которые мы используем в наших подпрограммах.

image

Создайте свой собственный класс

Во-первых, нам нужно добавить модуль класса в VBA. Нажмите комбинацию клавиш ALT + F11, чтобы открыть редактор Excel VBA.

  • Щелкните правой кнопкой мыши проводник проекта. Переместите курсор на Вставить → Модуль класса. Нажмите здесь. То же самое можно сделать из меню «Вставка».

image

  • Класс будет добавлен в папку «Модуль класса». Имя по умолчанию — это class1, class2 и т. Д. Вы можете изменить имя класса в окне свойств. Назовем наш класс «Добро пожаловать».

image

Теперь давайте добавим несколько атрибутов в наш класс. Поскольку я хочу, чтобы эти атрибуты были общедоступными, я использую оператор доступности * public.

Public name As String

Public var1 As Integer

Public var2 As Integer
  • Теперь давайте добавим к этому классу функцию. Мне нужна функция, которая говорит Привет! пользователю. Для этого добавьте подпрограмму и назовите ее sayHiTo.

Sub sayHiTo(user As String)

name = user

MsgBox ("Hi! " & name)

End Sub
  • Теперь давайте используем класс в модуле. Вставьте новый модуль, если у вас его нет. Напишите подписку. Я назвал свой дополнительный тест.

Sub test()

Dim wc As New Welcome 'Declared and initialized Welcome object

wc.sayHiTo ("Jack") 'used sayHiTo method of Welcome Object.

End Sub
  • Запустите этот вспомогательный тест с помощью клавиши F5. В книге Excel появится сообщение «Привет! Джек».

image

Как это работает?

В субтесте мы создали объект «wc» класса Welcomeclass. Объект создается в VBA двумя способами. мы запускаем код, Test sub создает объект wc класса Welcome. Этот объект обладает всеми свойствами класса Welcome. Мы используем метод sayHiTo класса Welcome, чтобы поздороваться с пользователем.

Создание объекта в Excel VBA

  1. .. Мгновенное создание При мгновенном создании мы создаем объект, объявляя объект с помощью «нового» ключа. В нашем примере выше мы использовали мгновенное создание.

Dim wc As New Welcome

{пусто} 2. Отложенное создание При отложенном создании мы сначала объявляем только объект. Мы не используем ключевое слово «новое». Чтобы использовать объект, нам нужно инициализировать его ключевым словом new.

Sub test()

Dim wc As Welcome

'wc.sayHiTo ("Jack") 'generates error since wc is not initialised yet

'initialising object

Set wc = New Welcome

wc.sayHiTo ("Cory") 'this will work.

End Sub

Доступ к переменным класса

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

Теперь вопрос в том, как получить доступ к переменным класса. Ранее мы использовали подпрограмму для доступа к имени, но классы VBA предоставляют свойства, которые используются для систематического обновления и извлечения значений частных переменных класса. Свойства более элегантны, чем подпрограмма или функция для обновления и доступа к частным переменным. Посмотрим как.

Синтаксис свойства класса

Private name As String

Private var1 As Integer

Private var2 As Integer

Property Let MyName(nm As String)

name = nm

End Property

Property Get MyName() As String

MyName = name

End Property

Давайте использовать их в модуле.

Sub test()

'creating class object

Dim wc As New Welcome

Dim wc1 As New Welcome



'using properties

wc.MyName = "Exceltip.com"

wc1.MyName = "ExcelForum.com"



Debug.Print wc.MyName

Debug.Print wc1.MyName



End Sub

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

Чем свойства отличаются от подпрограмм и функций

Обратите внимание, что в приведенном выше примере мы использовали свойство MyName в качестве переменной. Мы инициализировали значение переменной «Имя», просто написав wc.MyName = «assdf». Эта строка команды называет свойство с именемProperty Get MyName () As String. Мы не передавали никаких значений в скобках, как в начале.

Точно так же, чтобы распечатать значения переменной «Name», мы использовали commandDebug.Print wc.MyName. Разве это не так просто, как обычная инициализация переменной? Единственная разница в том, что в сегменте недвижимости можно сделать очень много. Вы ставите проверку данных, расчет, общение и т. Д., И пользователь видит только результат.

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

Так что да, ребята, это был простой пример модуля класса в Excel VBA.

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

Статьи по теме:

`link: / modules-class-modules-in-vba-insert-a-new-module-from-a-file-using-vba-in-microsoft-excel [Импортировать модуль из файла с помощью VBA в Microsoft Excel] `| Узнайте, как импортировать весь модуль из другого файла с помощью VBA.

link: / modules-class-modules-in-vba-create-a-new-module-using-vba-in-microsoft-excel [Создать новый модуль с помощью VBA в Microsoft Excel] | Вы можете использовать модуль для создания другой модели в VBA. Это может помочь вам свести к минимуму дополнительные накладные расходы.

link: / modules-class-modules-in-vba-add-a-procedure-to-a-module-using-vba-in-microsoft-excel [Добавить процедуру в модуль с использованием VBA в Microsoft Excel] | Для автоматического добавления процедур в модули используйте этот код VBA.

Популярные статьи:

link: / keyboard-formula-shortcuts-50-excel-shortcuts-to-вашу-продуктивность [50 комбинаций клавиш Excel для повышения вашей продуктивности] | Выполняйте свою задачу быстрее. Эти 50 ярлыков заставят вас работать в Excel еще быстрее.

link: / формулы-и-функции-введение-функции-vlookup [Функция ВПР в Excel] | Это одна из наиболее часто используемых и популярных функций Excel, которая используется для поиска значений из разных диапазонов и листов. link: / tips-countif-in-microsoft-excel [COUNTIF в Excel 2016] | Подсчитайте значения с условиями, используя эту удивительную функцию.

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

link: / excel-formula-and-function-excel-sumif-function [Как использовать функцию СУММЕСЛИ в Excel] | Это еще одна важная функция приборной панели. Это поможет вам суммировать значения для конкретных условий.