- •Е. А. Сидорова, п. С. Челобанов основы программирования на vba омск 2011
- •1. Понятие и свойства алгоритма
- •1.1. Понятие алгоритма
- •1.2. Свойства и виды алгоритмов
- •1.3. Способы представления алгоритмов
- •2. Язык программирования vba
- •2.1. Языки программирования
- •2.2. Общие сведения о vba
- •2.3. Основные понятия языка программирования
- •2.4. Алфавит vba
- •2.5. Типы данных
- •2.6. Формы записи вещественных чисел в программе
- •2.7. Переменные
- •2.8. Константы
- •2.9. Встроенные функции
- •2.10. Выражения
- •2.11. Редактор Visual Basic
- •2.12. Правила записи и ввода программ на vba
- •2.13. Создание первой программы
- •3. Управление вводом и выводом данных
- •3.1. Оператор присваивания
- •3.2. Операторы ввода данных
- •3.3. Генерирование случайных чисел
- •3.4. Операторы вывода данных
- •4. Линейные вычислительные процессы
- •5. Разветвляющиеся вычислительные процессы
- •5.1. Алгоритм разветвляющегося процесса
- •5.2. Оператор условного перехода If
- •5.2.1. Однострочный (линейный) оператор If
- •If Условие Then Операторы_1 [ Else Операторы_2 ],
- •5.2.2. Блочная форма оператора If
- •5.3. Объединение условий с помощью логических операций
- •5.4. Оператор безусловного перехода GoTo
- •5.5. Оператор выбора Select Case
- •6. Символьные переменные
- •6.1. Общие понятия
- •6.2. Сравнение строк
- •6.3. Строковые функции
- •6.4. Оператор Mid
- •7. Введение в объектно-ориентированное программирование
- •7.1. Основные понятия
- •7.2. Создание пользовательского интерфейса
- •7.3. Установка свойств объектов и определение методов
- •7.4. Составление программного кода
- •7.5. Создание пользовательского приложения с использованием формы
- •7.5.1. Создание формы
- •7.5.2. Разработка программного кода
- •8. Циклические вычислительные процессы
- •8.1. Понятие цикла
- •8.2. Арифметический цикл
- •8.2.1. Цикл с разветвлением
- •8.2.2. Цикл со счетчиком. Вычисление максимума и минимума
- •8.2.3. Вложенные циклы
- •8.3. Вычисление сумм и произведений
- •8.4. Итерационные циклы
- •8.4.1. Операторы цикла Do … Loop
- •9. Модульное программирование.
- •9.1. Понятие процедуры
- •9.2. Параметры процедур – формальные и фактические
- •9.3. Разработка процедур-функций
- •9.4. Разработка процедур-подпрограмм
- •9.5. Срочный выход из процедур и циклов
- •10. Переменные с индексами. Одномерные массивы
- •10.1. Понятие массива
- •10.2. Ввод массива
- •10.2.1. Считывание массива с листа Excel
- •10.2.2. Заполнение массива случайными числами
- •10.3. Вывод массива
- •10.4. Решение задач с использованием массивов
- •644046, Г. Омск, пр. Маркса, 35
3.3. Генерирование случайных чисел
Для генерирования случайного числа используется функция Rnd, которая возвращает значение в диапазоне [0; 1[.
Простейший формат записи:
x = Rnd
Для формирования целого случайного числа x в диапазоне [Min; Max] можно использовать формулу: x = Fix((Max – Min +1) * Rnd + Min).
Пример:
z = Fix(101 * Rnd – 50) 'Генерирование числа z в диапазоне [–50; +50].
Каждый раз при запуске VBA формируется одна и та же последовательность случайных чисел. Чтобы сформировать другую последовательность, нужно переустановить базу генератора случайных чисел с помощью оператора Randomize [база], который обычно указывается в начале программы.
В качестве базы целесообразно использовать функцию Timer, которая возвращает число секунд текущего времени суток:
Randomize Timer
3.4. Операторы вывода данных
Вывод информации на экран монитора осуществляется тремя способами.
1. Вывод в диалоговое окно с помощью команды MsgBox:
MsgBox "Сообщение", , "Заголовок"
В
результате выполнения этой команды на
экране появляется диалоговое окно
Заголовок
(рис. 7),
содержащее указанный текст Сообщения.
Выполнение программы приостанавливается
до нажатия пользователем кнопки ОК.
Пример: MsgBox y , , "Результат"
В данном случае в качестве выводимого в окно Результат сообщения задано текущее значение переменной y.
Простейший формат:
MsgBox "Сообщение" '(без заголовка окна)
Обычно сообщение включает в себя не только выводимое значение, но и соответствующий комментарий, который заключается в кавычки. Для объединения нескольких элементов выводного списка в одну строку в операторе вывода их разделяют знаком & (амперсанд), слева и справа от которого обязательно ставят пробел.
Пример: MsgBox "Значение диаметра =" & d
2. Вывод данных на лист рабочей книги Excel с использованием инструкции Сells(i, j), которая в этом случае выступает как команда вывода (в отличие от рассмотренной в п. 3.2 команды ввода):
Cells(i, j) = "Сообщение"
В результате этой команды указанное Сообщение помещается в ячейку с адресом, определяемым номером строки i и номером столбца j.
Примеры:
Cells(1, 1) = "x=" 'Вывод в ячейку A1 текста "x="
Cells(1, 2) = x 'Вывод в ячейку B1 текущего значения переменной x
3. Вывод данных в окно отладки Immediate («Немедленно»). Это окно обычно располагается под окном программного кода. Если этого окна нет, то его можно вывести, нажав Ctrl + G или выбрав в главном меню VBA команду View → Immediate Window.
Для вывода данных в окно отладки применяется метод Print (печать) объекта Debug (отладчик). Формат записи:
Debug.Print ["Сообщение"]
Пример: Debug.Print "Значение диаметра =" & d
Как видно из этого примера, команда Debug.Print используется аналогично команде MsgBox.
Пустой (т. е. без Сообщения) метод Debug.Print выводит пустую строку.
Помимо знака & в методе Print возможно использование разделителей списка выводимых данных. При этом знак «;» означает вывод очередного значения непосредственно за предыдущим, знак «,» – переход к началу новой зоны печати (окно отладки делится на 5 вертикальных зон по 14 символов каждая). При вводе знак «;» между элементами выводного списка можно опускать, VBA добавит его автоматически.
Запятая или точка с запятой в конце выводного списка в команде Debug.Print подавляет переход на новую строку (следующий Debug.Print начнет печать в той же строке).
Пример: Debug.Print "Результат y="; y;
В любом операторе вывода (MsgBox, Cells, Debug.Print) возможен не только вывод готовых результатов, но и одновременный расчет и вывод:
Примеры:
Debug.Print "s = "; s, " k1+k2 = "; k1 + k2
MsgBox "Если диаметр = " & d & ", то радиус = " & d / 2
Для вывода числового значения в заданном формате в операторах вывода MsgBox, Debug.Print следует использовать функцию Format с указанием количества десятичных знаков.
Примеры:
Debug.Print z 'Вывод переменной z обычным образом;
Debug.Print Format(z, "#0.00") 'Вывод переменной z с двумя десятичными знаками;
MsgBox Format(z, "#0.000") 'Вывод переменной z с тремя десятичными знаками.
Форматированный вывод числовых значений на лист Excel осуществляется с помощью инструкции вида
Cells(i, j).NumberFormat = "0.000"
Для цветового оформления ячеек на листе Excel можно использовать следующие команды:
Cells(i, j).Font.Color = RGB(r, g, b) 'Для установки цвета шрифта в ячейке;
Cells(i, j).Interior.Color = RGB(r, g, b) 'Для установки цвета фона (заливки) ячейки,
где r, g, b – интенсивность (целое число в диапазоне от 0 до 255) соответственно красной, зеленой и синей составляющих определяемого цвета. Необходимые значения r, g, b можно узнать в режиме выбора цветового спектра в любом приложении Windows. Например, инструкция Cells(1, 2).Font.Color = RGB(255, 0, 0) устанавливает в ячейке B1 красный цвет шрифта.
Для изменения цвета одновременно в нескольких ячейках необходимо в приведенных выше командах вместо указания одной ячейки Cells(i, j) задать диапазон требуемых ячеек с помощью ключевого слова Range, например:
Range("D3:F7").Interior.Color = RGB(190, 255, 202) 'Заливка ячеек с D3 по F7 светло-зеленым цветом.
Во всех командах ввода и вывода данных на лист Excel вместо инструкции Cells(i, j) можно использовать другие формы обращения к требуемой ячейке. Например, все приведенные ниже способы вывода значения переменной x в ячейку B1 равнозначны:
Cells(1, 2) = x
[B1] = x
Range("B1") = x
