- •8. Visual basic for applications
- •8.1. Основные понятия языка vba
- •Свойства – это атрибут объекта, определяющий его характеристики: размер, цвет, положение на экране или состояние (доступность, видимость). Для изменения характеристик меняют его свойства:
- •8.2. Создание функций пользователя
- •8.3. Встроенные типы данных
- •8.4. Переменные
- •8.5. Массивы переменных
- •8.6. Объявление констант
- •8.7. Операции языка vba
- •8.8.Встроенные функции vba
- •8.10.4 Операторы управления
- •Select Case KeyKode
- •End Select
- •8.10.5. Операторы повтора
- •Dim a As Variant
- •MsgBox “Победили на броске” & cStr(Бросок)
- •1 Вариант:
- •2 Вариант:
- •8.11. Встроенные диалоговые окна
- •8.11.1. Окно ввода информации
- •8.11.2. Встроенные диалоговые окна для обмена сообщениями
- •MsgBox ((Prompt[,Buttons] [,Title] [,Helpfile, Context])
- •8.11.3. Диалоговые окна пользователей
Select Case KeyKode
Case vbkey 0: MsBox “Нажали 0”
Case vbkey 1, vbkey 2: MsBox “Нажали 1 или 2”
Case vbkey 3 to vbkey 9, vbkey A to vbkey z: MsBox “Нажали цифру от 3 до 9 или буквенную клавишу”
Case Else: MsBox “Нажата не буква и не цифра”
End Select
End Sub
8.10.5. Операторы повтора
Оператор цикла For_Next – это наиболее широко используемый оператор, позволяющий организовать циклический процесс.
В этом операторе заранее известно число повторений цикла. Заданы начальное, конечное значения параметра (переменной) цикла и шаг изменения параметра цикла. Он имеет вид:
For <переменная цикла> = <начало> То <конец> [Step<шаг>]
<блок операторов 1> ‘тело цикла
[Exit For] ‘прекращение цикла по внутреннему условию
<блок операторов 2> ‘– повторяется определённое число раз
Next <переменная цикла>
Пример 1: Суммирование элементов массива:
Dim a As Variant
A = Array (1, 4, 12, 23, 34, 3, 24)
S = 0
For i = LBound (A) to UBound (A)
S = S+A(i)
Next i
Пример 2: Нахождение произведения первых n натуральных чисел.
Sub Factor ()
Const n as Integer=20, Fact as Integer=1
Dim i as Integer
For i=1 to n
Fact = Fact*i
Next i
MsgBox Format (Fact, “############”)
‘ Будет выведено 2432902008176640000
End Sub
Пример 3: Суммирование элементов выделенного диапазона
With Selection
n=.Rows.Count
m=.Column.Count
End With : S=0
For i=1 to n
For j=1 to m
S=S+selection.Cells(i,j).value
Next j
Next i
with Section.End(xlDown) ‘ Здесь под I столбцом выделенного
.offset (1,0).value = “Сумма” ‘диапазона выводится «сумма»,
.offset (1,1).value = S ‘а в соседней клетке значение S
End With
Оператор Do _Loop является вторым оператором, позволяющим организовать циклический процесс.
Он создаёт логически управляемый цикл. Имеет 4 модификации:
а) условие True в начале цикла
Do [While <условие>] – выполняется пока условие истинно
[<блок операторов>]
[Exit Do]
[<блок операторов>]
Loop
б) условие True в конце цикла:
Do
[<блок операторов>]
[Exit Do]
[<блок операторов>]
Loop [While <условие>]
в) условие False в начале цикла:
Do [Until <условие>] – выполняется пока условие
[<блок операторов>] не станет истинным
[Exit Do]
[<блок операторов>]
Loop
г) условие False в конце цикла:
Do
[<блок операторов>]
[Exit Do]
[<блок операторов>]
Loop [Until <условие>]
Пример 1:
Option Explicit
Sub Do_Rnd()
Dim a As Single: Dim I as Integer
Randomize
Do While True
a = Rnd()
Debug.Print a ‘печать случайного числа
If a>0.99 Then Exit Do
Loop
End Sub
Пример 2: Последовательное отображение имен файлов с расширением .sys на устройстве С:
Файл = Dir (“C:\*.sys”)
Do while <Len (Файл)
MsBox Файл – Без Exit!
Файл = Dir
Loop
Пример 3: Суммирование всех вводимых чисел.
S=0: Do
x=InputBox (“Введите число”)
If Not IsNumeric (x) then Exit Do
S=S+x
Loop
Пример 4: Код, ожидающий правильного ввода пароля
Do : Пароль = InputBox(“Введите пароль”)
Loop Until Пароль = “Привет”
Следующей разновидностью оператора цикла является оператор While _ Wend.
Его невозможно прервать – нет Exit Do.Он имеет следующую конструкцию:
While <условие>
<блок операторов>
Wend
Пример: Бросается игральная кость до выпадения 6 очков.
Dim Бросок As integer, Очки As integer
Randomize
Очки = Int(6*Rnd())+1
Бросок = 1
While Очки<6
Бросок = Бросок + 1
Очки = Int (6+ Rnd ())+1
Wend