Private Sub CommandButton1_Click()
Dim i As Integer
Dim j As Integer
Dim x As Single
Dim xn As Single
Dim xk As Single
Dim dx As Single
Dim g As Single
xn = InputBox("Xn = ", "Ввод начального значения x", -3, 8000, 2000)
xk = InputBox("Xk = ", "Ввод конечного значения x", 7, 8000, 1000)
dx = InputBox("dX = ", "Ввод значения шага x", 0.5, 8000, 2000)
i = InputBox("i = ", "Ввод значения начала таблицы, строка i", 5, 8000, 1000)
j = InputBox("j = ", "Ввод значения начала таблицы, столбец j", 5, 8000, 2000)
x = xn: Cells(i, j) = "X(vba)": Cells(i, j + 1) = "G1(vba)": Cells(i, j + 2) = "G2(vba)"
10 Cells(i + 1, j) = x
If x <= 0 Then
g = Sin(x)
Cells(i + 1, j + 1) = g
Else
g = Exp(-x)
Cells(i + 1, j + 2) = g
End If
x = x + dx
i = i + 1
If x > xk Then GoTo 20 Else GoTo 10
End Sub
– Применен условный оператор, у которого в частях Then и Else находятся по два оператора, поэтому по грамматическим требованиям необходим переход на другую строку и завершается оператор End If.
Программа табулирования в VВА
Функции, разветвляющейся больше, чем один раз
Private Sub CommandButton1_Click()
Dim i As Integer
Dim j As Integer
Dim x As Single
Dim xn As Single
Dim xk As Single
Dim dx As Single
xn = InputBox("Xn = ", "Ввод начального значения x", -3, 8000, 2000)
xk = InputBox("Xk = ", "Ввод конечного значения x", 7, 8000, 1000)
dx = InputBox("dX = ", "Ввод значения шага x", 0.5, 8000, 2000)
i = InputBox("i = ", "Ввод значения начала таблицы, строка i", 5, 8000, 1000)
j = InputBox("j = ", "Ввод значения начала таблицы, столбец j", 6, 8000, 2000)
x = xn: Cells(i, j) = "X(vba)": Cells(i, j + 1) = "Z1(vba)": Cells(i, j + 2) = "Z2(vba)": Cells(i, j + 3) = "Z3(vba)"
10 Cells(i + 1, j) = x
If x <= 0 Then
z = Sin(x)
Cells(i + 1, j + 1) = z
End If
If (x > 0) And (x <= 3.5) Then
z = Exp(-x)
Cells(i + 1, j + 2) = z
End If
If x > 3.5 Then
z = Application.Ln(x)
Cells(i + 1, j + 3) = z
End If
x = x + dx
i = i + 1
If x > xk Then GoTo 20 Else GoTo 10
End Sub
Некоторые комментарии к программе:
– Применены три неполных условных оператора, по количеству условий задания. Так как у каждого оператора в частях Then находятся по два оператора, то по грамматическим требованиям необходим переход на другую строку и завершается каждый оператор End If;
– Можно было воспользоваться вложенными условными операторами, но очень часто возникают логические ошибки при оценке уровня вложенности после части ELSE. Считается целесообразным при решении подобных задач использование грамматической конструкции, в которой количество неполных условных операторов соответствует числу логических условий решаемой задачи;
– В программе используется сложное логическое выражение
(x > 0) And (x <= 3.5),
состоящее из двух простых, объединенных логической функцией And.
Программа табулирования двух функций вVВА