Ms. Excel · 03.04.2022 0

Excel. Урок 65. Создаем форму на VBA. Добавляем данные из формы в конец таблицы

Начинаем знакомство с языком программирования в Excel – Visual Basic.

В этом уроке мы научимся делать форму ввода данных.

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

Кроме этого мы познакомимся с основами работы с формами и элементами формы. Написав эту небольшую программу Вы сможете начать программировать на Visual Basic в Microsoft Excel

Многие боятся лезть в программирование в Microsoft Excel, думая, что это очень сложно. Хочу сказать, что язык программирования Visual Basic, который используется в Excel существует достаточно давно и постоянно модифицируется и усовершенствуется. На сегодняшний день удобство использования среды программирования Эксель обеспечивает последнему такую большую популярность. Не нужно себя настраивать на то, что написание макросов и скриптов очень сложное, не подъемное занятие. Это не так.

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

Задача нашего урока научиться создавать пользовательские формы для ввода данных, познакомиться с основными инструментами формы: кнопки, поля ввода и надписи.

Мы напишем несколько простых и понятных скриптов.

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

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

Видео на RUTUBE https://rutube.ru/video/dc6f1eddfc2c515d5583ed32076c2001/

Видео на Яндекс Дзен https://zen.yandex.ru/video/watch/62488d901307c26b957f6624

Видео на YouTUBE https://youtu.be/pXT7F6ysNjA

Разбор скриптов

Сначала процедура, которая закрывает диалоговое окно по кнопке “Закрыть”

Private Sub CommandButton2_Click()
UserForm1.Hide
End Sub

Здесь все очень просто. Всего одна команда, которая закрывает диалоговое окно пользовательской формы

Далее основная процедура, которая осуществляет перенос данных из пользовательской формы в таблицу Excel

Private Sub CommandButton1_Click()
Dim zn1, zn2, zn3, l, adr
l = Range(“A1”).End(xlDown).Row
zn1 = TextBox1.Value
zn2 = TextBox2.Value
zn3 = TextBox3.Value
l = l + 1
adr = “A” & l
Range(adr).Value = zn1
adr = “B” & l
Range(adr).Value = zn2
adr = “C” & l
Range(adr).Value = zn3
End Sub

В разделе DIM мы описываем переменные. Тип переменных не указываем, оставляя это на усмотрение Эксель.
Dim zn1, zn2, zn3, l, adr

Далее переменной l мы присваиваем число, которое равно количеству строк заполненных на нашем листе, а именно в столбце А
l = Range(“A1”).End(xlDown).Row

В следующем блоке:
zn1 = TextBox1.Value
zn2 = TextBox2.Value
zn3 = TextBox3.Value
мы последовательно присваиваем переменным zn1, zn2 и zn3 значения, которые ввел пользователь в текстовые поля формы

Так как мы определили количество заполненных строк (номер последней заполненной строки) на нашем листе, а записывать данные нам нужно в следующей, т.е. в пустой, то мы вычисляем номер первой пустой строки
l = l + 1
Количество заполненных строк плюс одна.

В следующем блоке мы последовательно выводим в пустую строку наши данные, которые присвоены переменным zn1, zn2 и zn3. Для вывода значения используем конструкцию Range(adr).Value, где adr – это адрес ячейки, в которую нам нужно вывести значение. Для каждого значения вычисляем адрес. Для этого объединяем номер столбца (A, B и C соответственно) с номером строки (номером первой чистой строки). Например, если нам нужно вывести значение zn1 в ячейку А10, то конструкция будет такой: Range(А10).Value=zn1. т.к. значение нужной строки у нас присвоено переменной l, то для каждого значения получаются следующие выражения

adr = “A” & l
Range(adr).Value = zn1
adr = “B” & l
Range(adr).Value = zn2
adr = “C” & l
Range(adr).Value = zn3

Ну и закрываем процедуру стандартной командой
End Sub

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

Sub Кнопка1_Щелчок()
UserForm1.Show
End Sub