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