Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Основы программирования в VBA-2012.doc
Скачиваний:
36
Добавлен:
03.03.2016
Размер:
3.64 Mб
Скачать

17. Ввод и вывод данных с использованием встроенных функций vba

Функция MsgBox позволяет выводить информацию на экран в виде окна.

Общий вид функций:

MsgBox сообщение

[,код кнопки [,заголовок]]

сообщение – определяет значение выражения, которое будет выводиться в окне сообщения. Это выражение может быть текстом, который нужно взять в кавычки, и (или) переменной. Для вывода в одном окне текста сообщений и значения переменной, следует использовать операцию объединение строк (&).

ПРИМЕР.

Option Explicit

Sub prim5()

Dim Pi As Single

Pi = 3.14159

MsgBox " pi=" & Pi

End Sub

Результат работы макроса:

код кнопки – определяет какие кнопки и пиктограммы будут выводиться в окне сообщений. Если этот параметр не указан, в окне сообщения находится только кнопка Ок.

заголовок - содержит текст, который отображается в строке заголовка сообщения. Если этот аргумент не задан, в заголовок помещается строка Microsoft Excel.

ПРИМЕР.

Sub prim6()

Dim Pi As Single

Pi = 3.14159

MsgBox Pi,"Это число Pi"

End Sub

Ввод информации в VBA можно осуществить с помощью окна ввода:

Функция InputBox создает окно ввода:

InputBox(сообщение

[,заголовок[,значе-ние]])

сообщение – строка символов или строковая переменная, содержащая текстовое сообщение пользователю;

заголовок – текст, который отображается в строке заголовка сообщения;

значение – определяет значения, отображаемые по умолчанию в текстовом поле диалогового окна.

ЗАДАЧА 2. Угол задан в радианах. Выполнить перевод в градусную меру.

Sub prim2()

Const pi = 3.14159

Dim r As Single

Dim g As Integer

Dim m As Integer

Dim s As Integer

r = InputBox("r=", "Величина угла в радианах", pi / 4)

g = Fix(r * 180 / pi)

m = Fix((r*180/pi-g)*60)

s=Fix(((r*180/pi-g)*60-m)*60)

MsgBox g & " градусов" & m & " минут" & s & " секунд"

End Sub

18. Условный оператор

Условные операторы применяются, когда в зависимости от некоторого условия необходимо выполнить либо одно, либо другое действие.

Условный оператор, соответствующий приведенной блок-схеме, имеет вид:

If выражение Then

оператор1

Else

оператор2

EndIf

В данной конструкции выражение должно иметь логический тип.

Работает оператор так. Вычисляется значение выражения. Если оно имеет значение true, выполняется оператор1, в противном случае (выражение имеет значение false) – оператор2.

Если в зависимости от условия выполняется некоторое действие, а в противном случае ничего не происходит, то алгоритм имеет вид:

Условный оператор в этом случае имет конструкцию:

If выражение Then

оператор

EndIf

Эту запись можно назвать «пропуск оператора else».

Здесь оператор либо выполняется, либо пропускается, в зависимости от значения выражения.

Допускаются многократно вложенные операторы If...Then...Else, имеющие столько уровней вложения, сколько потребуется.

If выражение1 Then

операторы1

Elseif выражение2 then

операторы2

Elseif выражение3 then

операторы3

……………

Elseif выражениеN then

операторыN

Else

операторы

EndIf

Для облегчения чтения программы вместо многократно вложенных операторов, иногда предпочтительнее использовать оператор Select Case

Select Case <выражение>

Case <условие выбора 1>

<операторы 1>

Case <условие выбора 2>

<операторы 2>

……………..

Case <условие выбора N>

<операторы N>

Case Else

<операторы>

End Select

19. Примеры программ

ЗАДАЧА 3. Известны коэффициенты а, b и с квадратного уравнения ax2+bx+c=0. Вычислить корни квадратного уравнения.

Входные данные: a, b, c.

Выходные данные: х1, х2.

Sub prim7()

Dim a As Single

Dim b As Single

Dim c As Single

Dim d As Single

Dim x1 As Single

Dim x2 As Single

a = _

InputBox("A=","Коэффициенты квадратного уравнения", 2)

b = _

InputBox("B="," Коэффициенты квадратного уравнения", 3)

c = _

InputBox("C="," Коэффициенты квадратного уравнения",-2)

d = b ^ 2 - 4 * a * c

If d < 0 Then

MsgBox "Действительных решений нет", vbCritical

Else

x1=(-b+Sqr(d))/(2*a)

x2=(-b-Sqr(d))/(2*a)

MsgBox "X1=" & x1 & Chr(13) & "X2=" & x2, vbInformation

End If

End Sub

ЗАДАЧА 4. Дано вещественное число x. Для функции, график которой приведен ниже вычислить y=f(x).

Sub prim4()

Dim x As Single

Dim y As Single

x = Cells(1, 2)

If x <= -1 Then

y = 1

ElseIf x > 1 Then

y = 2

Else

y = Abs(x)

End If

Cells(2, 2) = y

End Sub

ЗАДАЧА 5. Даны вещественные числа x и y. Определить принадлежит ли точка с координатами (x; y) заштрихованной части плоскости.

Точка с координатами (x;y) принадлежит заштрихованной части плоскости, если:

Sub prim5()

Dim x As Single

Dim y As Single

x = Cells(1, 2)

y = Cells(2, 2)

If y <= 2 * x + 2 And

y <= -2 * x + 2 And

y > -1 Then

MsgBox "Yes"

Else

MsgBox "No"

End If

End Sub