- •Содержание
- •Раздел 1. Быстрый старт 2
- •Раздел 2. Редактор Visual Basic 11
- •Immediate Window (окно проверки) 15
- •Раздел 3. Переменные и типы данных 27
- •Раздел 4. Операторы управления 51
- •Раздел 5. Процедуры, подпрограммы и функции 66
- •Раздел 6. Объекты ms Excel 101
- •Раздел 7. Пользовательские формы 139
- •Immediate Window (окно проверки) 177
- •Введение
- •Раздел 1.Быстрый старт Использование макрорекордера
- •Запись макроса
- •Запуск макроса
- •Абсолютные и относительные ссылки Запись формулы на рабочем листе
- •Макрорекордер
- •Диалоговые окна для ввода/вывода данных
- •Функция InputBox
- •Функция MsgBox
- •Раздел 2.Редактор Visual Basic
- •Окна редактора vb
- •Project Window (окно проекта)
- •Properties Window (Окно свойств)
- •Code (окно программы)
- •Immediate Window (окно проверки)
- •Получение справки
- •Запись процедур
- •Режимы работы с программой
- •Ошибки и их обнаружение
- •Отладка
- •Меню и панели инструментов Visual Basic
- •Панели инструментов Стандартная панель инструментов
- •Панель инструментов отладки
- •Раздел 3.Переменные и типы данных Объявление переменных
- •Важность объявления переменных
- •Область видимости переменных
- •Время жизни переменных
- •Инициализация переменных
- •Операции с элементарными данными
- •Оператор присваивания
- •Выполнение операций
- •Арифметические операции
- •Операции сравнения
- •Оператор Like
- •Логические операции
- •Символьные операции
- •Приоритет операций
- •Операции с другими типами данных
- •Объектные переменные
- •Массивы
- •Динамические массивы
- •Пользовательский тип
- •Раздел 4.Операторы управления
- •Условный оператор If
- •Оператор выбора Select Case
- •Операторы цикла
- •Цикл For…Next
- •Цикл For Each…Next
- •Оператор Set
- •Цикл Do…Loop
- •Цикл While…Wend
- •Раздел 5.Процедуры, подпрограммы и функции
- •Классификация процедур
- •Структура и объявление процедуры
- •Синтаксис объявления процедуры общего типа
- •Синтаксис объявления функции
- •Вызов процедуры
- •Параметры и аргументы
- •Возврат значения функции
- •Использование процедур-функций на рабочем листе
- •Поименованные аргументы
- •Использование необязательных аргументов
- •Использование параметра ParamArray
- •Вызов процедур другого проекта
- •Автопроцедуры
- •Событийные процедуры
- •Рекурсивные процедуры
- •Встроенные функции Классы функций
- •Использование табличных функций
- •Организация интерфейса при помощи встроенных функций
- •Функция MsgBox
- •Функция InputBox
- •Строковые функции
- •Примеры на использование различных строковых функций Функция Format
- •Функция Val
- •Функции Len, Mid
- •Функция Left
- •Функция Instr
- •Функция Chr
- •Математические функции
- •Функции Int и Fix
- •Функция Log
- •Функции Randomize и Rnd
- •Функции даты и времени
- •Примеры функций даты и времени Функции Day, Month, Year, DateSerial
- •Функции Now, Time, Timer
- •Функция WeekDay
- •Функции Hour, Minute, Second
- •Раздел 6.Объекты ms Excel
- •Свойства объектов
- •Методы объектов
- •Модель объектов
- •Коллекции объектов
- •Обращение к объекту Контейнеры
- •Ссылка на объект
- •Оператор With
- •Использование объектных переменных
- •Объект Application
- •Активные объекты
- •Свойства, влияющие на высвечивание на экране Свойство DisplayAlerts (r/w Boolean)
- •Свойства DisplayFormulaBar (r/w Boolean), DisplayStatusBar (r/w Boolean)
- •Свойство ScreenUpdating (r/w Boolean)
- •Свойства Top, Left, Height, Width, UsableWidth, WindowState
- •Свойство Visible (r/w Boolean)
- •Другие свойства объекта Application
- •Методы Метод Calculate
- •Метод CheckSpelling
- •Метод OnTime
- •Метод Wait
- •Коллекции объектов
- •Объекты Workbooks и Workbook
- •Событийные процедуры
- •Объекты Sheets, WorkSheets и WorkSheet
- •Свойства Свойство Name (r/w String)
- •Свойство Type (r/o String)
- •Свойство UsedRange
- •Свойства Next и Previous
- •Свойство Parent
- •Свойство Visible (r/w Boolean)
- •Методы Метод Add
- •Методы Move и Select
- •Событийные процедуры
- •Объект Range
- •Свойства Cвойство Range
- •Свойство Cells
- •Свойство Offset
- •Метод Union и свойство Areas
- •Свойства Column и Row (r/o Integer)
- •Свойства Columns и Rows
- •Свойство CurrentRegion
- •Cвойства, связанные с шириной и высотой ячейки
- •Методы Методы Select и Activate
- •Метод Clear
- •Цветовое оформление объекта Range Свойство ColorIndex
- •Свойство Color
- •Раздел 7.Пользовательские формы
- •Режимы работы с формой
- •Режим конструктора
- •Элементы управления
- •Событийные процедуры
- •Режим выполнения
- •Объекты UserForm и Controls
- •Разработка приложения
- •Приложение 1
- •Конструирование начальной формы
- •Свойства формы и элементов управления
- •Создание событийных процедур
- •Конструирование формы для выбора рабочего листа
- •Создание событийных процедур
- •Элемент ListBox
- •Событийная процедура инициализации формы
- •Завершение разработки приложения
- •Связь формы с ячейками рабочего листа
- •Элемент TextBox
- •Элемент ListBox
- •Приложение 2
- •Конструирование форм
- •Процедуры
- •Приложение a. Справочная система Просмотр объектов, их свойств и методов (Object Browser)
- •Окно Object Browser
- •Панель инструментов Object Browser
- •Выход из Object Browser
- •Интерактивная подсказка
- •Приложение b. Инструментальные средства отладки программ
- •Контрольные точки или точки останова
- •Трассировка или пошаговое выполнение программы
- •Использование объекта Debug
- •Окна отладчика
- •Immediate Window (окно проверки)
- •Окно значения переменной
- •Locals Window (окно локальных переменных)
- •Окно контрольных значений (Watches)
- •Приложение c. Основные формы записи алгоритмов
- •Понятие "алгоритм"
- •Классификация алгоритмов
- •Способы записи алгоритмов
- •Запись на естественном языке
- •Изображение алгоритма в виде графических символов
- •Представление основных типов алгоритмов в виде блок-схем
Математические функции
Каждая математическая функция имеет один параметр – число (number). При использовании действительных чисел как констант разделителем целой и дробной части является точка. В разделе Derived Math Functions справочника по VBA можно найти формулы расчета математических функций, не являющихся встроенными функциями.
Математические функции
Функция |
Описание |
Abs |
Возвращает абсолютную величину числа |
Atn |
Возвращает арктангенс числа |
Cоs |
Возвращает косинус угла* |
Eхр |
Возвращает степень числа e (еx) |
Fiх |
Возвращает целую часть числа |
Int |
Округляет число до меньшего целого числа |
Log |
Возвращает натуральный логарифм числа (основание е = 2.71828...) |
Randomize |
Инициирует генератор случайных чисел |
Rnd |
Возвращает случайное число |
Sin |
Возвращает синус угла* |
Sgn |
Возвращает знак числа |
Sqr |
Возвращает квадратный корень из числа |
Тап |
Возвращает тангенс угла* |
*Углы задаются в радианах. Для перевода градусов в радианы умножьте градусы на /180. |
Функции Int и Fix
Fix(5.72)=5 |
Int(5.72)=5 |
Fix (-3.666)=-3 |
Int(-3.666)=-4 |
Функция Log
Функция вычисляет натуральный логарифм числа.
Public Sub arr_log() Dim a(1 To 10) As Single For i = 1 To 10 a(i) = Log(i) Debug.Print a(i) Next i End Sub |
Десяти элементам одномерного массива присваиваются значения натуральных логарифмов в точках, равных номеру элемента массива. |
Функции Randomize и Rnd
Функции используются для получения последовательности случайных чисел. Функция Randomize инициирует последовательность случайных чисел, передавая функции Rnd новое опорное число, а функция Rnd строит последовательность случайных чисел. Аргумент number не является обязательным для обеих функций.
Аргумент функции Randomize используется для установки начального значения будущей последовательности случайных чисел. Если аргумент опущен или равен нулю, в качестве опорного числа используется значение, возвращаемое системным таймером, – количество секунд, прошедших с начала текущих суток.
Функция Rnd (датчик случайных чисел) возвращает случайное число типа Single, меньшее 1 и большее или равное нулю. Аргумент number определяет способ генерации случайного числа:
если аргумент не задан или является положительным числом, то результатом является очередное число в последовательности;
если аргумент равен нулю, то возвращается предыдущее случайное число;
при отрицательном аргументе возвращается всегда одно и то же число, сгенерированное с использованием аргумента.
Пример
Процедура генерирует случайные числа в соответствии с заданными аргументами.
Sub rnd_num() Randomize (0) Debug.Print Rnd '0,1446241 Debug.Print Rnd(-1) ‘0,224007 Debug.Print Rnd() ‘3,584582E-02 Debug.Print Rnd(0) ‘3,584582E-02 Debug.Print Rnd() ‘8,635235E-02 Debug.Print Rnd(5) ‘0,1642639 Debug.Print Rnd(6) ‘0,1797358 Debug.Print Rnd(-5) ‘0,8383257 Debug.Print Rnd(5) ‘0,2874333 Debug.Print Rnd(-5) ‘0,8383257 Debug.Print Rnd(6) ‘0,2874333 End Sub |
Первое полученное значение определяется опорным числом 0. Создается последовательность чисел, в которой две пары совпадающих чисел. Это числа третье и четвертое (без аргумента и с аргументом, равным нулю) и числа восьмое и десятое, сгенерированные при использовании аргумента, равного –5. |
Важно
Функция Randomize без аргументов записывается без скобок.
Перед вызовом функции Rnd используйте функцию Randomize для задания нового опорного числа.
Если функция Randomize не используется, то функция Rnd без аргументов использует в качестве опорного числа случайное число, возвращенное при предыдущем вызове или таймер, если функция Rnd используется первый раз.
Использование одинаковых чисел в качестве аргумента функции Randomize не вызывает выработку одинаковых последовательностей случайных чисел.
Для повторения последовательности случайных чисел следует вызвать функцию Rnd с отрицательным аргументом перед или после использования функции Randomize с числовым аргументом.
Для генерации случайных чисел в некотором диапазоне от A до B можно использовать формулу Int((B – A + 1) * Rnd + A), а формула 1+ Int(Rnd*N) генерирует целое число от 1 до N, где N >1.
Для получения чисел 0 и 1 удобно использовать формулу Int(Rnd*2).
Пример
Процедура моделирует игру "орлянка" или игру в кости.
Sub test_dice_coin() 'основная процедура Dim num As Integer, m As Integer Dim n As Integer, i As Integer Dim h() As Integer, reply As Variant Dim game As String reply = MsgBox("Выбрасывание монеты", vbYesNo) If reply = vbYes Then game = "Орлянка" ReDim h(0 To 1) Else game = "Игра в кости" ReDim h(1 To 6) End If num = InputBox("Введите число выбрасываний") For i = 1 To num If reply = vbYes Then n = coin(0, 1) Else n = dice(6) End If h(n) = h(n) + 1 Next i Debug.Print game For i = LBound(h) To UBound(h) Debug.Print i, h(i) Next i End Sub |
Function coin (A As Integer, B As Integer) 'моделирование выбрасывания монеты coin = Int((B – A + 1) * Rnd() + A) End Function
Function dice(n) 'моделирование бросания кости dice = 1 + Int(Rnd() * n) End Function
Функция coin возвращает значения 0 или 1, а функция dice возвращает значения от 1 до 6. Массив переменной длины h используется для подсчета количества повторений каждого из возможных значений: 0 или 1 в случае игры в орлянку, от 1 до 6 в случае игры в кости. |