- •Тема 1. Объекты, свойства, события
- •1.1. Знакомство с Visual Basic for Application (Excel)
- •Задание 1.1
- •Технология выполнения задания
- •1.2. Свойства формы
- •Краткая справка
- •Задание 1.2
- •Технология выполнения задания.
- •Unload Me
- •Set frmColor = Nothing
- •Усовершенствование программы.
- •Освоение режима отладки.
- •Контрольное задание
- •Контрольные вопросы.
- •Задание для закрепления полученных знаний.
- •3. События формы
- •Краткая справка.
- •Задание 1.3
- •Этап 1. Знакомства с событиями Click и KeyPress.
- •Этап 2. Освоение режима отладки
- •Контрольное задание.
- •Контрольные вопросы.
- •Задание для закрепления полученных знаний.
- •Тема 2. Стандартные типы данных
- •2.1. Строковые переменные
- •Основная цель
- •Краткая справка
- •Строковые переменные.
- •Диалоговые функции
- •Окно сообщения
- •Окно ввода
- •Задание 2.1
- •Технология выполнения задания
- •Контрольное задание.
- •Контрольные вопросы.
- •Задание для закрепления знаний закрепления знаний
- •2.2. Целые переменные
- •Основная цель задания
- •Краткая справка
- •Задание 2.2
- •Технология выполнения задания
- •Контрольное задание
- •Контрольные вопросы
- •Задание для закрепления знаний.
- •2.3. Вещественные переменные.
- •Основная цель задания.
- •Краткая справка.
- •Задание 2.3
- •Технология выполнения задания
- •Контрольное задание
- •Контрольные вопросы
- •Задание для закрепления знаний
- •2.4. Переменные типа дата/время
- •Основная цель задания
- •Краткая справка
- •Задание 2.4
- •Технология выполнения задания.
- •Контрольное задание
- •Контрольные вопросы
- •Задание для закрепления знаний
- •2.5. Область видимости переменных
- •Основная цель задания
- •Краткая справка
- •Задание 2.5
- •Технология выполнения задания
- •Контрольное задание
- •Контрольные вопросы
- •Задание для закрепления знаний
- •3.1. Условный оператор IF THEN
- •Основная цель задания
- •Краткая справка.
- •Задание 3.1
- •Технология выполнения задания
- •Контрольные вопросы
- •Задание для закрепления знаний
- •Номер счета.
- •Баланс на начало месяца.
- •Общая сумма расходов в данном месяце.
- •Новый баланс = начальный баланс + расходы - кредиты.
- •3.2. Условный оператор IF...THEN ... ELSEIF ... END IF
- •Основная цель задания
- •Краткая справка
- •Задание 3.2
- •Технология выполнения задания
- •Контрольные вопросы
- •Задание для закрепления знаний
- •3.3. Условный оператор SELECT CASE... END SELECT
- •Основная цель задания
- •Краткая справка
- •Случайные числа
- •4. Переключатели
- •Задание 4.1
- •Задание 4.2
- •5. Флажки. Элементы CheckBox.
- •Краткая справка
- •6. Циклы.
- •6.1 Операторы циклов (общее).
Основы программирования в среде Visual Basic for Application (Excel 2010)
раторов2», и т.д.
Задание 3.2
Усовершенствуйте программу учебного задания 3.1, так чтобы она в зависимости от числа баллов давала следующие сообщения:
а) больше 100: принят на бюджетную ставку б) от 80 до 100: принят по контракту
в) от 75 до 79: вопрос о приеме будет решаться после собеседования д) меньше 75: не принят (а).
Технология выполнения задания
1.Выполните пункты 1…5 Задания 1.1
2.Задайте свойству Name значение frmZadanie3_2, а свойству Caption значение «Приемная комиссия 1»
3.Откройте форму frmZadanie3_1 в окне Project - VBAProject.
4.Щелкнув форму, выделите все расположенные на ней элементы управления с помощью клавиш Ctrl+A, а затем скопируйте их в буфер обмена нажав клавиши Ctrl+С.
5.Дважды щелкнув кнопку Прием на форме Приемная комиссия, откройте код cmdPriem_Click(), выделите его и также скопируйте в буфер обмена.
6.На форме Приемная комиссия 1 также дважды щелкните кнопку Прием для открытия шаблона процедуры, вставьте из буфера только что скопированную подпрограмму и откоррек-
тируйте ее следующим образом (тем самым превратив его в работоспособную подпрограмму):
Private Sub cmdPriem_Click() Dim intNuin As Integer intNum = Val(txtNum.Text)
Усков Ю.И., Катеринина С.Ю. |
35 |
каф. МиИТ, нояб.2015 |
Основы программирования в среде Visual Basic for Application (Excel 2010)
If intNum > 100 Then
lblResol.Caption = IxIName.Texl & _
"принят(а) на бюджетную ставку" ElseIf intNum >= 80 Then
lblResol.Caption = txtName.Text & " принят(а) по кон-
тракту"
ElseIf intNum >= 75 Then lblResol.Caption = txtName.Text & _
"вопрос о приеме будет решаться после собеседования" Else
lblResol.Caption = txtName.Text & " не принят(а)" End If
End Sub
3.Запустите программу. Вводим фамилию, имя, число баллов и нажимаем кнопку Прием. Можно убедиться, что программа выдает сообщения при любом числе баллов.
4.Добавим в программу кнопку сдачи экзаменов. Число баллов, набранных во время экзамена, будем определять с помощью датчика случайных чисел.
5.В Visual Basic случайные числа генерируются с помощью функции функцию Rnd(), которая генерирует случайное число в интервале от 0 до 1. Для задания псевдослучайной последовательности используется подпрограмма Randomize. Обращение к этому подпрограмму Randomize k, где k случайное число. Если параметр k у подпрограммы Randomize отсутствует, то по умолчанию в качестве случайного числа используется значение функции Timer.Добавьте кнопку на форму cmdPriem . В окне свойств задайте свойству Name значение cmdExam, а свойству Caption задайте значение &Сдача экзаменов. Измените размер и начертание шрифта: 14, полужирный (свойство Font) (рис. 3.2).
7.Дважды щелкните на кнопке Сдача экзаменов, чтобы открыть окно программы. Откорректируйте процедуру события Click кнопки:
Private Sub cmdExarn_Click() Dim intNum As Integer
Randomize intNum = lnt(Rnd(1) * 150) + 1
Рис. 3.2
8. Сохраните проект и форму с именем z3-2.
9. Запустите программу командой Run, Start (Пуск, Старт). 1милию, имя и нажимаем сначала кнопку «Сдача экзаменов», а затем «Прием»
Контрольные вопросы
1.Как работает оператор If Then Elself?
2.Что возвращает функция Rnd()?
3.Для чего нужен оператор Randomize?
4.Какие события возникают при работе программы?
Усков Ю.И., Катеринина С.Ю. |
36 |
каф. МиИТ, нояб.2015 |
Основы программирования в среде Visual Basic for Application (Excel 2010)
5. Что означает знак подчеркивания _ , используемый в программном коде учебного задания 3.2?
Задание для закрепления знаний
Усовершенствуйте программу, которую вы сделали в задании 3.1. Программа определяет новый баланс покупателя. При нажатии на кнопку "Оценить кредитоспособность" программа проверяет, превышает ли новый баланс предельный размер кредита и в зависимости от результата проверки выдает различные сообщения: а) в случае если новый баланс меньше либо равен 95% предельного размера кредита, то выдастся сообщение, в котором указывается Номер счета и Новый баланс б) в случае если новый баланс меньше либо равен 100%, но больше 95% предель-
ного размера кредита, то выдастся сообщение "Ваш кредит близок к предельному"; в) в случае если новый баланс больше 100% предельного размера кредита, то вдается сообщение "Ваш кредит превышен".
3.3. Условный оператор SELECT CASE... END SELECT
Основная цель задания
1.Ознакомиться и изучить оператор Select Case...End Select.
2.Научиться получать случайные числа с помощью функции Rnd.
3.Научиться описывать и применять функции.
Краткая справка
Для принятия сложных решений (особенно при наличии нескольких условий) можно воспользоваться блоком Select Case ... End Select.
Его синтаксис прост:
Select Case x
Case Is = 3
‘ Выполнить некоторые действия для случая х =3
Case Is > 17
‘ Выполнить другие действия для случая х >17
Case 4 То 16
‘ Выполнить другие действия для случая изменения х от 4 до 16
Case Else
‘ Действия для случая, когда не выполнено ни одно из предыдущих условий
End Select
Для каждого оператора Select Case в программе должен быть соответствующий оператор End Select. Количество секций Case между Select Case и End Select может быть любым.
Для каждого проверяемого условия создается отдельная секция Case. Если вы хотите отдельно обработать ситуацию, когда не выполняется ни одно из условий, создайте секцию Case Else. Она во многом похожа на секцию Else оператора
If....Then.
Усков Ю.И., Катеринина С.Ю. |
37 |
каф. МиИТ, нояб.2015 |
Основы программирования в среде Visual Basic for Application (Excel 2010)
В операторе Select Case можно сравнивать как значения строковых и числовых переменных, так и диапазоны их значений.
Случайные числа
Случайные числа часто используются в задачах моделирования, возникающих в различных областях. Для генерации случайных чисел используется: подпрограмма
Randomize и функция Rnd.
Функция Rnd() предназначена для получения случайного числа в диапазоне от 0 до 1, т.е., например, 0,36703; 0,8975; 0,5050 и т.д. Далее можно изменять диапазон чисел умножая на константу. Например, умножая вышеприведенные числа на 100, получим 36,703, 89,75, 50,50. Если необходимо получать целые числа, то используется функция Int(), которая удаляет дробную часть числового значения, переданного ей в качестве параметра. При этом для положительных значений она возвращает ближайшее меньшее целое число. Например: Int(3,267545) = 3
Int(7,9563) = 7 Int(0,043678) = 0
Таким образом, оператор Int(Rnd()* 10) теоретически может нам вернуть числа в диапазоне от 0 до 10, но практически будет возвращать числа в диапазоне от 0 до 9. И это нужно учитывать при генерации случайных чисел.
Функция Rnd() возвращает число, которое берется из длинной последовательности так называемых случайных чисел. Для выбора позиции в этой последовательности, начиная с которой будет выбираться число, используется подпрограмма Randomize.
Обращение к подпрограмме Randomize
Randomize k,
где k случайное число. Если параметр k у подпрограммы Randomize отсутствует, то по умолчанию в качестве случайного числа используется значение функции Timer. Функция: Timer возвращает текущее значение времени в секундах. Строго говоря:, последовательность чисел является не случайной, а псевдослучайной, так как, начав с того же стартового значения можно точно повторить всю последовательность.
Задание 3.3
Напишите программу, которая бы загадывала число от 1 до 10 и предлагала бы Пользователю угадать число. Примерный вид программы показан на рис. 3.3.
Рис. 3.3
Технология выполнения задания
Этап 1. Создание программы
1.Выполните пункты 1…5 Задания 1.1
2.Задайте свойству Name формы имя frmZadanie3_3, а свойству Caption значение
Выбор числа
Усков Ю.И., Катеринина С.Ю. |
38 |
каф. МиИТ, нояб.2015 |
Основы программирования в среде Visual Basic for Application (Excel 2010)
3.Создайте на форме две кнопки. Задайте свойству Name первой кнопки значение cmdGetSecretNumber, а свойству Caption задайте значение Начать игру.
4.Укажите для свойства Name второй кнопки значение cmdGuess, а для свойства Caption измените значение на &Угадай Число.
5.Создайте в верхней части формы два элемента-надписи (Label). Задайте свойству Caption первой этикетки значение Попытка, а свойству Name второй этикетки укажите значение lblTry. Задайте размер шрифта 14, полужирный (свойство
Font)
6.Дважды щелкните на форме чтобы открыть окно программы.
7. Вставьте следующие строки в секцию (General)(Declarations) формы frmMain:
Option Explicit
Private intSecretNumber As Integer
Private intTry As Integer
8.Перейдем к созданию функции GetSecretNumberQ, которая является одним из важнейших компонентов приложения.
9.Вставьте код следующей функции:
Private Function GetSecretNumber() As Integer ‘ Загадать число от 1 до 10
Randomize
GetSecretNumber = Int(Rnd(1) * 10) +1 End Function
В функции GetSecretNumber используется три стандартных функции Rnd(), Int()). Последний оператор функции
GetSecretNumber = lnt(Rnd(1) * 10) + 1
обеспечивает возвращение случайного числа в диапазоне от 1 до 10. Обратите внимание, что левая часть оператора - это имя функции.
10.Bставьте следующий фрагмент в процедуру события Load формы frmMain:
Private Sub Form_Load() ' Загадать число
IntSecretNumber = GetSecretNumber intTry=0
End Sub
11. Вставьте следующий фрагмент в процедуру события Click кнопки. cmdGetSecretNumber:
Private Sub cmdGetSecretNumber_Click() ' Загадать число
intSeu etNumber = GetSecretNumber cmdGuess.Caption = "Угадай число" End Sub
12. Отредактируйте процедуру события Click кнопки cmdGuess и приведите ее к
Усков Ю.И., Катеринина С.Ю. |
39 |
каф. МиИТ, нояб.2015 |
Основы программирования в среде Visual Basic for Application (Excel 2010)
следующему виду:
Private Sub cmdGuess_Click()
Dim intGuess As Integer Dim strMsg As String Dim strCap As String Dim strRc As String intTry = intTry + 1
lblTry.Caption = Str(intTry) ' Создать сообщение
strMsg = "Введите число от 1 до 10" ' Получить число от пользователя
strRc = lnputBox(strMsg, "Введите число" ) 'Убедиться в том. что пользователь ввел значение...
If strRc <> "" Then
' Преобразовать строку в целое число с помощью функции СInt() intGuess =Clnt(strRc)
'Проверка: число угадано верно? Select Case intGuess
Case Is = intSecretNumber ' Да, пользователь угадал
strMsg = "Вы угадали" strCap = "Верно!" MsgBox strMsg, vbExclamation. strCap
'Закончить игру
'0ператор End используется для завершения программы. End Case Is > intSecretNumber
'Нет, следующая попытка
strMsg = "Неверно. Загаданное число меньше" strCap = "Попробуйте снова"
MsgBox strMsg, vbInformation, strCap Case Is < intSecretNumber
' Нет, следующая попытка
strMsg = "Неверно. Загаданное число больше" strCap = "Попробуйте снова"
MsgBox strMsg, vbInformation, strCap End Select
Else
' Новая попытка
strMsg = "Вы должны ввести число!" strCap = "Введите число!"
MsgBox strMsg, vbInformation, strCap End If
cmdGuess.Caption = strCap End Sub
13. Запустите программу.
Усков Ю.И., Катеринина С.Ю. |
40 |
каф. МиИТ, нояб.2015 |