Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Методичка vba 10.01.12.doc
Скачиваний:
3
Добавлен:
16.04.2019
Размер:
103.94 Кб
Скачать

Конструкция If . . . Then…Else(развилка)

Конструкция If . . . Then применяется, когда необходимо выполнить один или группу операторов в зависимости от некоторого условия. Синтаксис этой конструкции позволяет задавать ее в одной строке или в нескольких строках программы:

Вариант 1:

If условие Then выражение else выражение

Например:

If x>5 then y=4 else y=3

Преимущества-экономия места и времени

Вариант 2:

If условие Then

Выражение

Else

Выражение

End If

Например:

If x > 6 Then

y = 5

Else

y = 4

End If

Преимущества-После Then и Else можно указывать несколько выражений.

Обычно условие является простым сравнением, но оно может быть любым выражением с вычисляемым значением. Это значение интерпретируется как False (Ложь), если оно нулевое, а любое ненулевое рассматривается как True (Истина). Если условие истинно, то выполняются все выражения, стоящие после ключевого слова Then. Если условие ложно,то выполняются все выражения,стоящие после ключевого слова else.

6.3 Конструкция Select Case

Конструкция Select Case является альтернативой конструкции If . . . Then . . . Else в случае выполнения блока, состоящего из большого набора операторов. Конструкция Select Case предоставляет возможность, похожую на возможность конструкции If . . . Then . . . Else, но в отличие от нее она делает код более читаемым при наличии нескольких вариантов выбора.

Конструкция Select Case работает с единственным проверяемым выражением, которое вычисляется один раз при входе в эту конструкцию. Затем VBA сравнивает полученный результат со значениями, задаваемыми в операторах Case конструкции. Если найдено совпадение, выполняется блок операторов, ассоциированный с оператором Case:

Select Case проверяемое_выражение

[Case список_выражений1

[блок_операторов1]]

[Case список_выражений2

[блок_операторов2]]

. . .

[Case Else

[блок_операторовn]]

End Select

Например:

Sub primer()

Dim x As Single

Dim y As Single

x = InputBox("введите x”)

Select Case x

Case 4, 5, 6

y = 3

Case 0

y = 4

Case Else

y = 5

End Select

MsgBox "y=" & y

End Sub

Читается это так:если x=4, или x=5, или x=6,то y=3.Если x=0,то y=4.Иначе y=5.

Операторы цикла(циклические алгоритмы)

1)цикла For..Next

For Счетчик = Нач. знач. TO конечное знач. STEP

. . .

NEXT Счетчик

Например:

For i = 1 To n Step 2

sum = sum + i

Next

p.s. если не писать step,то будет задействован шаг по умолчанию равный 1.

2) Цикл Do..While

Do While условие

<Блок операторов>

Loop

Например:

Do While n > 5

s = (s + n) / 2

n = s / n

Loop

3) Цикл Do..Until

Do

<Блок операторов>

Loop Until условие

Например:

Do

x = x - 2

Loop Until x < 0

Одномерные массивы.

Статический массив:

Dim имя массива(число) as тип элемента

Например:

Dim a(10) as single

Динамический массив:

Dim имя массива() as тип элемента

Например:

Dim b() as single

Далее размерность массива должна быть определена в программе с помощью инструкции:

Redim имя массива(n)

Например :

Redim c(n)

p.s.n-может быть и числом,и переменной.

Ручной ввод размерностей и элементов динамического массива:

n=inputbox(“n=”)

Redim a(n)

For i to n

a(i)=inputbox(“введите “ & i &” –ый элемент массива = “)

next

Ввод массива через арифметическое выражение:

Dim a() as single

n=inputbox(“n=”)

Redim a(n)

For i=1 to n

a(i)=(i-1)*(i+1)

next

Вывод массива в окно выводов результатов:

Sub PR18() Dim A() As Single, Str1 As String Dim n As Integer, i As Single

n = InputBox("Введите число элементов массива:", "Определение размера") ReDim A(n) As Single Str1 = "" For i = 1 To n A(i) = Val(InputBox("Введите " & i & "-ый элемент массива", "Заполнение массива")) Str1 = Str1 & A(i) & " " Next MsgBox "Массив: " & Str1

End Sub

Пример решения задачи:

Найти количество положительных элементов массива:

Sub primer()

Dim a() as single,i as single,k as single

n = InputBox("Введите число элементов массива:", "Определение размера") ReDim A(n) As Single

k=0 For i = 1 To n

A(i) = Val(InputBox("Введите " & i & "-ый элемент массива", "Заполнение массива")) if A(i)>0 then k=k+1

next

msgbox “количество положительных элементов массива” & k

end sub