
- •1. Введение
- •2. Среда для написания программы на vba
- •3. Примеры программирования на vba
- •4. Свойства и методы объектов excel
- •5. Пример - разработка бланка заказа
- •6. Разработка заявки на поступление товаров
- •7. Разработка автоматизированного бланка
- •‘Фамилия записывается во вторую колонку.
- •8. Изменение цвета объекта
- •9. Объект Image
- •8. Задания для самостоятельной работы
- •8.1. Задание 1
- •8.2. Задание 2
- •8.3 Задание 3
- •8.4. Задание 4
- •На первом рабочем введите необходимый текст и создайте элементы управления (рис.54):
- •Программирование в microsoft excel. Часть 1
7. Разработка автоматизированного бланка
Начнем разработку следующего рабочего листа (рис.36). Следует заметить, что здесь на представленном фрагменте используются не элементы управления, а просто ячейки, отформатированные определенным образом. При этом сами фамилии набирать не требуется (необходимо лишь подобрать заливку и размер шрифта для вводимого в последующем текста). В качестве первого действия следует убрать сетку с рабочего листа и далее отформатировать ячейки (рис. 41).
Рис.41.
Теперь расположим на листе следующие элементы управления (рис.42).
Рис. 42.
На рис.42 присутствует новый элемент – переключатель. Этот элемент позволяет обеспечить два состояния - включено и выключено. Идея следующая – человек, заполняющий бланк, указывает (щелчком по одному из переключателей) откуда он - из Нижнего Новгорода или из другого города. При этом, в случае выбора другого города, в текстовом окне указывается город. На листе мы реализуем оформление следующим образом. В начальном виде установлен вариант - Н.Новгород, а текстовое окно city для выбора города невидимо (у свойство Visible установлено значение False). При щелчке на переключателе Другой город текстовое окно city для выбора города становится видимым (у свойство Visible устанавливается значение True).
Напишем процедуры обработки щелчков по переключателям:
Private Sub OptionButton1_Click()
OptionButton2.Value = False
City.Visible = False
End Sub
Private Sub OptionButton2_Click()
OptionButton1.Value = False
City.Visible = True
End Sub
Теперь выйдите из режима конструктора и проверьте написанные действия. На рис.43, 44 и 45 показаны фрагменты, которые нам необходимо далее создать на рабочем листе.
Рис. 43.
Рис. 44.
Рис.45.
После всех указанных действий лист примет вид аналогичный рис. 46.
Рис.46.
Теперь приведем процедуры ( выполняемые по щелчкам на объектах) для рабочего листа:
Private Sub St_Click()
TextBox1. Visible = True
TextBox2. Visible = True
TextBox3. Visible = False
TextBox4. Visible = False
End Sub
Private Sub Sp_Click()
TextBox1. Visible = False
TextBox2. Visible = False
TextBox3. Visible = True
TextBox4. Visible = True
End Sub
Введем некоторые уточнения. На нашей форме находится четыре переключателя (заголовки - Студент, Специалист, Н.Новгород и Другой город). По правилам только один из них может быть включен. Для того, чтобы разбить эти переключатели на две группы (Студент, Специалист и Н.Новгород, Другой город), необходимо выполнить следующие действия.
Откройте в режиме конструктора окно свойств переключателя Н.Новгород (OptionButton1) и измените свойство GroupName (вместо Лист1 введите Лист1_2). Тоже самое сделайте в окне свойств переключателя Другой город (OptionButton2). Тем самым мы выделили эти переключатели в новую группу. Теперь на созданной форме можно будет включить два переключателя.
Следующая задача – запись на второй лист введенных данных. На рис.47 показана таблица данных, которая будет заполняться автоматически по щелчке по кнопке.
Рис.47.
При этом для отображения полной картины выполненных действий на рис.48 показан первый лист в рабочем состоянии с введенными данными.
Рис.48.
Напишем обработку события щелчка по кнопке с названием - Записать на лист2. Текст процедуры, обрабатывающей данное событие, приводится далее.
Private Sub CommandButton2_Click()
‘ Подсчет количества записей на втором листе.
N = 0
While Worksheets(2).Cells(N + 2, 1).Value <> ""
N = N + 1
Wend
‘Заполнение очередной строки. Номер записывается в первую колонку.
Worksheets(2).Cells(N + 2, 1).Value = N + 1