Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекция_VBA.doc
Скачиваний:
13
Добавлен:
27.03.2016
Размер:
164.35 Кб
Скачать

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