Главная Случайная страница Контакты | Мы поможем в написании вашей работы! | ||
|
Инструкции принятия решения позволяют выполнять группы инструкций в зависимости от определенного условия. В VBA для принятия решения используются две инструкции: If …then …else и Select Case.
Инструкция If …then …else
Инструкция If …then …else задает выполнение определенных групп инструкций в зависимости от значения выражения. Ее синтаксис приведен ниже:
If Условие Then Инструкции [Else Инструкции_ Else]
Допускается также использование блоковой формы синтаксиса:
If Условие Then
[Инструкции]
[Else
[Инструкции_else]
End if
Или расширенная блоковая форма синтаксиса:
If Условие Then
[Инструкции]
[Elseif Условие-n Then
[Инструкции_elseif]]
[Else
[Инструкции_elseif_else]]
End if
При этом предложение Elseif…Then может повторяться несколько раз. Синтаксис инструкции If …then …else содержит элементы, представленные в таблице 1
Таблица 1. Элементы синтаксиса инструкции If …then …else
Элемент | Описание |
Условие Инструкции Условие 1 Инструкции_elseif Инструкции_else Инструщии_ elseif_else | Обязательный элемент, представляющий логическое выражение, имеющее значение True или False. Если Условие имеет значение Null, то значение Условие считается равным False Необязательный элемент в блоковой форме, но обязательный — в строчной форме. Этот элемент представляет собой одну или несколько инструкций, разделяемых двоеточиями, которые выполняются, если Условие имеет значение True Обязательный элемент, аналогичный элементу Условие, если употреблено выражение Elseif Необязательный элемент — одно или несколько инструкций, которые выполняются, если Условие имеет значение False, а Условие-п — True Необязательный элемент— одна или несколько инструкций, которые выполняются, если Условие имеет значение False Необязательный элемент — одно или несколько инструкций, которые выполняются, если ни Условие, ни Условие-n не имеют значение False |
Однострочная форма допускает выполнение нескольких инструкций в результате проверки одного условия if…Then. При этом все инструкции должны находиться на одной строке и разделяться двоеточием, как показано в приведенном ниже
примере:
Существуют четыре целых числа, если inta мешьше intв, то к inta прибавить 3 и intb прибавить 7 и intc приравнять сумме inta и intb.
Sub testsub()
Dim inta As Integer, intb As Integer, intc As Integer, _
intd As Integer, intanew As Integer, intbnew As Integer, _
intcnew As Integer
inta = Int(Rnd * 10 + 1): intb = Int(Rnd * 10 + 1)
intc = Int(Rnd * 10 + 1): intd = Int(Rnd * 10 + 1):
If inta < intd Then intanew = inta + 3: intbnew = intb + 7
intcnew = intb + inta
MsgBox "inta=" & inta & Chr(10) & Chr(13) & _
"intb=" & intb & Chr(10) & Chr(13) & _
"intc=" & intc & Chr(10) & Chr(13) & _
"intd=" & intd & Chr(10) & Chr(13) & _
"intanew=" & intanew & Chr(10) & Chr(13) & _
"intbnew=" & intbnew & Chr(10) & Chr(13) & _
"intcnew=" & intcnew
End Sub
Если inta=4, intb=8, intc=1, intd=7, то intanew=7, intbnew=15, intc=12. Если inta=9, intb=8, intc=1, intd=8, то intanew=0, intbnew=0, intc=0.
Существуют четыре целых числа, если inta мешьше intd, то к inta прибавить 3 и intb прибавить 7 и intc приравнять сумме inta и intb, иначе inta прибавить 30 и intb прибавить 70 и intc приравнять сумме inta и intb
Sub testsub1()
Dim inta As Integer, intb As Integer, intc As Integer, _
intd As Integer, intanew As Integer, intbnew As Integer, _
intcnew As Integer
inta = Int(Rnd * 10 + 1): intb = Int(Rnd * 10 + 1)
intc = Int(Rnd * 10 + 1): intd = Int(Rnd * 10 + 1)
If inta < intd Then
intanew = inta + 3
intbnew = intb + 7
intcnew = intb + inta
Else
intanew = inta + 30
intbnew = intb + 70
intcnew = intb + inta
End If
MsgBox "inta=" & inta & Chr(10) & Chr(13) & _
"intb=" & intb & Chr(10) & Chr(13) & _
"intc=" & intc & Chr(10) & Chr(13) & _
"intd=" & intd & Chr(10) & Chr(13) & _
"intanew=" & intanew & Chr(10) & Chr(13) & _
"intbnew=" & intbnew & Chr(10) & Chr(13) & _
"intcnew=" & intcnew
End Sub
Если inta=5, intb=3, intc=7, intd=7, то intanew=8, intbnew=10, intc=8. Если inta=6, intb=10, intc=10, intd=3, то intanew=36, intbnew=80, intc=60.
При выполнении блоковой формы инструкции if также сначала проверяется Условие. Если оно имеет значение True, то выполняются инструкции, следующие за словом then. Если же Условие имеет значение false, то при наличии одного или нескольких условий elseif выполняется последовательная проверка каждого из них.В случае истинности одного из условий осуществляется выполнение следующих за соответствующим предложением then. В том случае, если ни из условий elseif не имеет значение true или предложения elseif отсутствуют, то выполняются инструкции, следующие за else.После выполнения инструкций, следующих за then или else, происходит передача управления на инструкцию, расположенную непосредственно за end if.
Ввести три числа: x, y, z.Если сумма трех попарно различных чисел x, y, z меньше 1, то меньшее из x,y заменить полусуммой y и z, иначе большее из x и z заменить на y4 .
Sub lop177()
Dim x, y, z, s
x = Val(InputBox("введите x:"))
y = Val(InputBox("введите y:"))
z = Val(InputBox("введите z:"))
If (x + y + z) < 1 Then
If x < y Then
x = (y + z) / 2
Else
y = (y + z) / 2
End If
MsgBox "x=" & x & Chr(10) & Chr(13) & _
"y=" & y & Chr(10) & Chr(13) & _
"z=" & z
Else
If x > z Then
x = y ^ 4
Else
z = y ^ 4
End If
MsgBox "x=" & x & Chr(10) & Chr(13) & _
"y=" & y & Chr(10) & Chr(13) & _
"z=" & z
End If
End Sub
Дата публикования: 2014-11-26; Прочитано: 283 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!