Информатика: Сборник лабораторных работ по программированию в среде Visual Basic for Applications, страница 23

Счетчик     Регулятор счетчика (спиннер) аналогичен линейке прокрутки.

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

Пример 1.  Создать окно диалога, содержащее поля для ввода фамилии и имени. Значения этих полей записать в электронную таблицу.

На рабочем листе "Лист1" создать ЭТ следующего вида:

А                 B                  C                  D

1                  Фамилия     Имя

2       

Создадим форму, которая будет содержать 2 поля для ввода текста (имени и фамилии), 2 надписи и 2 кнопки. При нажатии кнопки ВВОД информация из текстовых полей будет записываться в ЭТ, а при нажатии кнопки КОНЕЦ  будет происходить выход из программы.

Label2

TextBox2

CommandButton2

TextBox1

CommandButton1

Label1

Установим свойства объектов:

Объект

Свойство

Значение

Label1

Caption

Фамилия

Label2

Caption

Имя

CommandButton1

Caption

Ввод

CommandButton2

Caption

Конец

Кнопке КОНЕЦ назначим процедуру :

Private Sub CommandButton2_Click()

End

End Sub

Кнопке ВВОД назначим процедуру:

Option Explicit

Private Sub CommandButton1_Click()

Dim Фамилия, Имя As String

Dim Row As Integer

Row = Application.CountA(Sheets("Лист1").Range("А:А")) + 1

    With UserForm1

Фамилия = .TextBox1.Text

Имя = .TextBox2.Text

    End With

    With Sheets("Лист1")

        .Cells(Row, 1).Value = Фамилия

        .Cells(Row, 2).Value = Имя

    End With

    With UserForm1

       .TextBox1.Text = ""

       .TextBox2.Text = ""

    End With

End Sub

Некоторые объяснения к программе :

В VBA диапазон "А:А" означает столбец А. Функция СЧЕТЗ в русскоязычной версии Еxcel подсчитывает число непустых ячеек в выделенном диапазоне. Ее  эквивалентом в англоязычной версии является функция CountA. Т.о. функция

Row = Application.CountA(Sheets("Лист1").Range("А:А")) + 1

вычисляет число непустых ячеек в столбце А.

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

Оператор WithEndWith используется для удобства при работе с несколькими свойствами или методами одного и того же объекта.

Например, конструкция

With Sheets("Лист1")

.Cells(Row, 1).Value = Фамилия

        .Cells(Row, 2).Value = Имя

End With

без оператора WithEndWithэквивалентна конструкции вида :

Sheets("Лист1").Cells(Row, 1).Value = Фамилия

Sheets("Лист1").Cells(Row, 2).Value = Имя

Sheets и Cells – это объекты VBA, обозначающие рабочий лист и клетку с соответствующими координатами.

Программа запускается в окне отладчика клавишей F5 или кнопкой "Запуск подпрограммы". Для запуска программы можно также создать командную кнопку на рабочем листе Excel, назначив ей соответствующий модуль. Например, такой

Sub Кнопка1_Щелкнуть()

UserForm1.Show

EndSub

Кнопка на рабочем листе создается с помощью Панели инструментов Формы (Элементы управления). Макрос назначается двойным щелчком левой кнопки мыши или с помощью контекстного меню.

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

OptionButton1

Label1

CommandButton1

Окно формы имеет вид: