Занятие 3
задача1
.Использование оператора For – Each –Next
Цикл, организованный с помощью этого оператора, позволяет перебирать все объекты семейства или элементы массива и выполнять одни и те же действия над каждым объектом или семейством.
2.1. Задание «Перечисли страны». Рассмотрим простой пример цикла For – To – Next. Задача следующая: при щелчке по командной кнопке (CommandButton) должно появляться окно сообщения MsgBox с названием страны. Перечень названий стран зададим с помощью массива из 5 элементов.
С оздадим на рабочем листе кнопку с заголовком «Страны Африки». Имя задайте более короткое (Страны).
O
Описание
переменных в области General
Dim CountryArray(5) As String
Dim Country As Variant
Private Sub Страны_Click()
CountryArray(1) = "Алжир"
CountryArray(2) = "ЮАР”
CountryArray(3) = "Эфиопия"
CountryArray(4) = "Албания"
CountryArray(5) = "Кения"
For Each Country In CountryArray
MsgBox Country
Next
End Sub
Цикл For – Each – Next используется для вывода каждого элемента массива.
For Each –ключевое слово, обозначающее начало цикла
CountryArray(5) – массив из 5 элементов.
Country – переменная, которой присваиваются по очереди все элементы группы.
Next – ключевое слово, обозначающее конец цикла.
Option Base – оператор, устанавливающий нижнюю границу массива, в данном случае 1. Результат показан на рисунке 1.
Рис.1
Задача2
«Выделение чисел». Заполните некоторый диапазон на рабочем листе 2 (A1:F20) числовыми значениями (от 1 до 50, числа могут повторяться). Наша задача выделить все значения отличные от 25 – рис.2.
Создадим командную кнопку CommandButton с именем и заголовком «Выделение». При щелчке по этой кнопке должна будет выполняться процедура выделения ячеек с данными значениями. В ячейках будет изменен размер шрифта на 18, начертание шрифта – полужирный (Bold) и заливка ячеек будет красная. Значение ColorIndex = 0 означает, что заливка отсутствует.
Запишем программный код:
Dim Cell As Range
Private Sub Выделение_Click()
Worksheets(2).Select
For Each Cell In Range("A1:F20")
If Cell.Value <> 25 Then
Cell.Font.Size = 18
Cell.Font.Bold = True
Cell.Interior.ColorIndex = 3
End If
Next
End Sub
Рис.2
Разберем текст программы:
Dim Cell As Range – задаем переменную Cell типа Range.
Worksheets(2).Select – выделяем (активизируем) второй рабочий лист.
Cell.Font.Size = 18 ‘задаем размер шрифта.
Cell.Font.Bold = True ‘ задаем полужирное начертание шрифта.
Cell.Interior.ColorIndex = 3 ‘ индекс заливки, соответствующий красному цвету.
Результат работы данной программы показан на рис. 2
Далее создадим вторую кнопку с именем и заголовком «Очистка» и запишем программный код:
Private Sub Очистка_Click()
Worksheets(2).Select
For Each Cell In Range("A1:F20")
Cell.Font.Size = 10
Cell.Font.Bold = False
Cell.Interior.ColorIndex = 0
Next
End Sub
Строка Cell.Interior.ColorIndex = 0 убирает заливку ячеек.
При щелчке по второй кнопке шрифт снова становится прежним – размер 10, заливка убирается (индекс 0).
Задача3
3.1. На рабочем листе 3 в ячейку а1 введите произвольный текст или число, например, 100.
Создадим командную кнопку с именем и заголовком NoWith. Запишем программный код для форматирования ячейки А1 после щелчка по этой кнопке.
Private Sub CommandButton1_Click()
ActiveWorkbook.Worksheets(3).Range("A1").Font.Bold = True
ActiveWorkbook.Worksheets(3).Range("A1").Font.Italic = True
ActiveWorkbook.Worksheets(3).Range("A1").Font.Size = 18
ActiveWorkbook.Worksheets(3).Range("A1").Font.Name = "Arial"
ActiveWorkbook.Worksheets(3).Range("A1").Font.ColorIndex = 3
ActiveWorkbook.Worksheets(3).Select
End Sub
Рис.3
Для очистки данной ячейки создайте новую командную кнопку, назовите ее «Очистка ячейки» и запишите программный код:
Private Sub ОчисткаЯчейки_Click()
Range("A1").Clear
With Range("A1")
.RowHeight = 20
.ColumnWidth = 10
End With
End Sub
Задача 4.
Рассмотрим теперь следующий элемент управления – поле со списком (рис.12). Этот элемент применяется для хранения списка значений. В этом элементе всегда отображается только одно значение списка. После активизации поля со списком список раскрывается и из него можно выбрать необходимый элемент. Кроме свойства Name у данного элемента есть несколько важных свойств. Рассмотрим их для дальнейшего использования.
Рис. 12.
Свойства, которые будут рассматриваться ниже: ListIndex, ListCount, в окне свойств не отображаются. Они будут фигурировать только в тексте программы. Свойство ListIndex содержит номер текущего элемента списка (того, который подсвечен – на нем щелкнули мышкой). Нумерация элементов списка начинается с нуля. Фактически по значению этого свойства можно определить, какой элемент списка ему соответствует. Свойство ListCount содержит число элементов списка, а свойство Text, выбранный в списке элемент.
Теперь рассмотрим наиболее используемые методы работы со списком. Метод Clear удаляет все элементы из поля со списком. Синтаксис использования:
ИмяОбъекта.Clear
Метод AddItem добавляет элемент в список. Синтаксис использования: ИмяОбъекта.AddItem элемент. Метод RemoveItem – удаление элемента из списка. Синтаксис использования:
RemoveItem номер удаляемого элемента
Задание 3. Разработем на рабочем листе следующий программный фрагмент (рис. 13).
Рис. 13.
Необходимо обеспечить выполнение следующих действий:
по щелчку по кнопке Заполнение список заполняется строками – яблоко, груша, слива, дыня, арбуз;
по щелчку по полю со списком выбранный элемент помещается в текстовое окно;
по щелчку по кнопке Очистка текстовое окно и поле со списком очищаются – становятся пустыми.
Для заполнения поля со списком по щелчку по кнопке Заполнение необходимо процедуру Заполнение_Click( ) оформить так как показано на рис. 14.
Рис. 14.
Далее для заполнения текстового окна по щелчку по полю со списком (при выборе того или иного элемента списка) необходимо процедуру Список_Click ( ) оформить так как показано на рис.15.
Рис. 15.
Теперь для очистки списка и текстового окна необходимо написать обработку события Щелчок по кнопке Очистка (рис. 16).
Рис. 16.
Теперь разрабатываемый программный фрагмент на рабочем листе готов и Вы можете попробовать его в работе (выйдя из режима конструктора).
Private Sub ComboBox1_Click()
TextBox1.Text = ComboBox1.Text
End Sub
Private Sub CommandButton1_Click()
ComboBox1.AddItem "яблоко"
ComboBox1.AddItem "груша"
ComboBox1.AddItem "слива"
ComboBox1.AddItem "дыня"
End Sub
Private Sub CommandButton2_Click()
ComboBox1.Clear
TextBox1 = ""
End Sub