Worksheets(3).Activate
End Sub
Теперь вернемся к первому листу и рассмотрим процедуру, вызываемую по кнопке Очистить:
Private Sub Очистить_Click()
N = 0
While Worksheets(1).Cells(N + 3, 1).Value <> ""
N = N + 1
Wend
For i = 3 To N + 2
Worksheets(1). Cells(i, 1).Value = ""
Worksheets(1). Cells(i, 2).Value = ""
Worksheets(1). Cells(i, 3).Value = ""
Worksheets(1). Cells(i, 4).Value = ""
Next
Label2.Caption = ""
End Sub
Теперь осталось только рассмотреть обработку нажатия на кнопку Пересчет. Смысл этой процедуры в том, что если мы в бланке заказа произведем изменения (удаляем строку или изменяем количество товара), то, очевидно, необходимо поменять и итоговые вычисления.
Private Sub Пересчет_Click()
N = 0
While Worksheets(1).Cells(N + 3, 1).Value <> ""
N = N + 1
Wend
symma = 0
For i = 3 To N + 2
a = Worksheets(1).Cells(i, 3).Value
Worksheets(1).Cells(i,4).Value =Worksheets(1).Cells(i, 2).Value * a
symma = symma + Worksheets(1).Cells(i, 4).Value
Next
Label2.Caption = Str(symma)
End Sub
При открытии книги мы рассматривали ранее процедуру Workbook _ Open (). В процессе работы с книгой мы можем на втором листе вносить изменения в номенклатуру товаров. Чтобы эти изменения сразу же отражались в уже открытой книге, аналогичные действия выполним в процедуре Worksheet _ Activate ():
Private Sub Worksheet_Activate()
Worksheets(1).Spisok1.Clear
N = 0
While Worksheets(2).Cells(N + 1, 1).Value <> ""
N = N + 1
Wend
For i = 1 To N
a1 = Worksheets(2).Cells(i, 1).Value
a2 = Worksheets(2).Cells(i, 2).Value
a = a1 & " " & a2 & " " & " руб."
Worksheets(1).Spisok1.AddItem a
Next
End Sub
Задание 4.4. Разработка автоматизированного бланка
Начнем разработку следующего рабочего листа (рис. 4.13). Следует заметить, что на представленном фрагменте используются не элементы управления, а просто ячейки, отформатированные определенным образом. При этом сами фамилии набирать не требуется (необходимо лишь подобрать заливку и размер шрифта для вводимого в последующем текста). В качестве первого действия следует убрать сетку с рабочего листа и далее отформатировать ячейки (рис. 4.14).
Рис.4.13
Теперь расположим на листе элементы управления (рис.4.14).
Рис. 4.14
На рис. 4.14 присутствует новый элемент – переключатель (OptionButton). Этот элемент позволяет обеспечить два состояния - включено и выключено.
Идея следующая – человек, заполняющий бланк, указывает (щелчком по одному из переключателей), где он проживает в Нижнем Новгороде или в другом городе. При этом в случае выбора другого города в текстовом окне указывается город. На листе мы реализуем оформление следующим образом. В начальном виде установлен вариант - Н.Новгород, а текстовое окно 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
Выйдем из режима конструктора и проверим действия элементов.
Создадим элементы, показанные на рис. 4.15, 4.16 и 4.17.
Рис. 4.15
Рис. 4.16.
Рис.4.17
После всех указанных действий лист примет вид, показанный на рис. 4.18.
Рис.4.18.
Теперь приведем процедуры (выполняемые по щелчкам на объектах) для рабочего листа:
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). Тем самым мы выделили эти переключатели в новую группу. Теперь на созданной форме можно будет включить два переключателя.
Следующая задача – запись на второй лист введенных данных. На рис. 4.19 показана таблица данных, которая будет заполняться автоматически по щелчку по кнопке.
Рис.4.19.
При этом для отображения полной картины выполненных действий на рис.4.20 показан первый лист в рабочем состоянии с введенными данными.
Рис.4.20.
Напишем обработку события щелчка по кнопке с названием - Записать на лист 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
‘Фамилия записывается во вторую колонку.
Worksheets(2).Cells(N + 2, 2).Value = Range("c2")
‘Имя записывается в третью колонку.
Worksheets(2).Cells(N + 2, 3).Value = Range("c4")
‘Отчество попадает в четвертую колонку.
Worksheets(2).Cells(N + 2, 4).Value = Range("c6")
‘Название города располагается в пятой колонке.
If OptionButton1.Value = True Then
Worksheets(2).Cells(N + 2, 5).Value = "Н.Новгород"
Else
Worksheets(2).Cells(N + 2, 5).Value = city.Text
End If
‘Вид деятельности расположим в шестой колонке, место работы или
‘ учебы в седьмой, а примечание в восьмой колонке.
If st.Value = True Then
Worksheets(2).Cells(N + 2, 6).Value = "студент"
Worksheets(2).Cells(N + 2, 7).Value = TextBox1.Text + " курс " +
TextBox2.Text
Else
Worksheets(2).Cells(N + 2, 6).Value = "спец. с в/о"
Worksheets(2).Cells(N + 2, 7).Value = TextBox3.Text
Worksheets(2).Cells(N + 2, 8).Value = TextBox4.Text
End If
‘Характеристики, указанные во флагах.
If flag1.Value = True Then
Worksheets(2).Cells(N + 2, 9).Value = "Да"
Else
Worksheets(2).Cells(N + 2, 9).Value = "Нет"
End If
If flag2.Value = True Then
Worksheets(2).Cells(N + 2, 10).Value = "Да"
Else
Worksheets(2).Cells(N + 2, 10).Value = "Нет"
End If
If flag3.Value = True Then
Worksheets(2).Cells(N + 2, 11).Value = "Да"
Else
Worksheets(2).Cells(N + 2, 11).Value = "Нет"
End If
End Sub