Примеры программирования на VBA

Все примеры снабжены подробными комментариями в виде ремарок в программе и могут быть скопированы непосредственно в окно редактора.

Пример 1

Программа вычисления выражения y = 2x2 – 10 для целых чисел, при y ⊂ [0;100] и x ≥ 0.
Результат выводится в файл: каждое значение на новой строке.
В программе использованы две встроенные функции: Str() – для перевода числового значения результата в символьную форму и Trim() – для подавления пробелов в начале образующейся строки.
В программе допущена ошибка в порядке анализа оператора ветвления, когда первым оценивается редкое событие (If y > 100), прерывающее программу.

Sub Macro1()
X = 0 'Задается переменная памяти X с числовым значением ноль
r: 'Метка для перехода. Не рекомендуется к использованию, как устаревший способ
        y = 2 * X * X - 10 'Вычисление значения переменной y для текущего значения X
        If y >= 0 Then 'Анализируем только значения y >= 0
                If y > 100 Then 'Если превышено допустимое значение y
                        Exit Sub 'Завершить выполнение программы
                Else 'В противном случае сформировать строку результата и вывести её
                        Selection.TypeText Text:=Trim(Str(X)) + ": " + Trim(Str(y))
                        Selection.TypeParagraph 'Добавить символ конца абзаца
                End If
        End If 'Конец оператора ветвления
        X = X + 1 'Увеличить на 1 значение переменной X
        GoTo r 'Перейти на метку r
End Sub

Пример 2

Тоже, что и в предыдущем случае, но использованы: функция LTrim(), подавляющая только пробел в начале (а значит и работающая быстрее); цикл While...Wend, что позволило сократить код программы на 3 строки, несмотря на необходимость проводить вычисление выражения дважды; возведение в квадрат вместо умножения (код стал более универсальным).
В начале выполнения программы создается новый документ, что предотвращает порчу текущего документа или ошибку при попытке вывода информации в несуществующий документ.

Sub Macro2()
Documents.Add DocumentType:=wdNewBlankDocument
Dim X As Integer 'Создается переменная памяти X целочисленного типа
X = 0
y = 2 * X ^ 2 - 10
While y <= 100
        If y >= 0 Then
                Selection.TypeText Text:=LTrim(Str(X)) + ": " + LTrim(Str(y))
                Selection.TypeParagraph
        End If
        X = X + 1
        y = 2 * X ^ 2 - 10
Wend
End Sub

Пример 3

Sub SQRT1()
'Извлечение целой части квадратного корня из целого числа
Dim x As Double 'Объявим переменную, из которой извлекаем корень
                'и присвоим ей тип Double, что позволит задать значение
                'вплоть до 1.79769313486232E308 
Dim y As Double 'Результат работы
Again: 'Метка для повторной попытки ввода x
x = InputBox("Введите число", "Извлечение квадратного корня")
If x < 0 Then 'Введено невозможное число
        MsgBox "Число должно быть больше ноля!", , "Ошибка!"
        GoTo Again
End If
If x = 0 Or x = 1 Then 'Корень извлекать нет смысла
        y = x + 1 'Прибавим 1, так как его придется вычитать для вывода результата
Else 'А иначе стоит попробовать
        '...Сюда надо вставить тот блок, который будет осуществлять проверку
        'А вот то, что надо было сделать: (возможный вариант)
        y = 1 'Начинаем с 1, чтобы не упустить корень из 2 и 3
        While y ^ 2 <= x 'Цикл ПОКА, продолжаюшийся до тех пор, пока искомый корень (у)
                'в квадрате не превысит введенное в начале число (х)
                y = y + 1 'Раз условие не достигнуто, добавим к у ешё 1
        Wend 'Начать цикл с начала, но уже с увеличенным значением у
End If
MsgBox "Квадратный корень из числа" + Str(x) + " равен" + Str(y - 1), , "Ответ"
         'y - 1, так как цикл найдет значение, на 1 превышающее искомое
End Sub