- •Содержание
- •Раздел 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. Основные формы записи алгоритмов
- •Понятие "алгоритм"
- •Классификация алгоритмов
- •Способы записи алгоритмов
- •Запись на естественном языке
- •Изображение алгоритма в виде графических символов
- •Представление основных типов алгоритмов в виде блок-схем
Операторы цикла
Повтор действий в процедурах достигается при помощи организации циклов. Цикл – это многократно повторяемая последовательность операторов.
Важно
Существуют различные способы организации циклов, но во всех способах есть
строка, которая отмечает начало цикла, и строка, которая отмечает его конец;
условие выхода из цикла или продолжения выполнения цикла.
Условие выхода из цикла может располагаться в начале или конце цикла.
Нормальный выход из цикла производится, когда выполнено это условие.
После выхода из цикла управление передается оператору, следующему за оператором окончания цикла.
Нельзя передавать управление внутрь цикла и из цикла во вне его.
Внутри цикла можно задать дополнительные условия выхода из цикла и использовать операторы немедленного завершения цикла.
В языке Visual Basic используется несколько форм операторов цикла:
вычисляемые циклы повторяют набор команд определенное (вычисляемое) число раз;
объектные циклы выполняют набор команд для каждого объекта группы;
логически прерываемые циклы повторяют команды, пока условие имеет истинное значение или пока значение условия не станет таковым.
Одни и те же действия по повтору команд можно записать различными способами, но в разных ситуациях удобнее использовать определенные способы организации циклов.
Цикл For…Next
Оператор используется для организации вычисляемого цикла (Counted Loop), который применяется, если известно или может быть вычислено количество повторений.
Синтаксис оператора
For counter = start To end [Step step] [statements] [Exit For] [statements]
Next [counter]
counter – переменная цикла (счетчик цикла);
start – начальное значение переменной цикла;
end – конечное значение переменной цикла;
step – шаг цикла. Необязательное значение. По умолчанию шаг цикла равен единице;
Exit For – оператор немедленного выхода из цикла;
statements – набор повторяемых команд (тело цикла);
Next – оператор окончания цикла.
При первом входе в цикл счетчик цикла устанавливается в начальное значение (start). При каждом повторе к счетчику цикла прибавляется шаг цикла (step). Как только значение переменной цикла превысит конечное значение, цикл завершается. Можно подсчитать, сколько раз выполнится цикл: например, если шаг цикла равен единице, то цикл выполняется end-start+1 раз и каждый раз с новым значением счетчика цикла.
Внимание
counter – числовая переменная. Счетчик цикла обычно участвует в вычислениях внутри цикла.
Параметры цикла start, end, step могут быть заданы числами, числовыми переменными или числовыми выражениями.
Параметры цикла вычисляются при входе в цикл и не изменяются во время выполнения цикла, даже если меняются переменные, влияющие на эти значения.
Параметры цикла могут иметь положительные и отрицательные значения.
Внутри тела цикла не рекомендуется присваивать новые значения переменной цикла, т.к. это может вызвать зацикливание.
Счетчик цикла можно использовать и по завершении цикла. По окончании цикла значение счетчика цикла равно конечному значению плюс шаг.
Рекомендуется указывать в операторе Next идентификатор счетчика цикла, так как в случае использования вложенных циклов часто трудно определить, где кончается тот или иной цикл.
Оператор Exit For осуществляет немедленный выход из цикла независимо от значения счетчика цикла.
Примеры
В процедуре рассчитываются заработная плата, налог (единая ставка налога 13%) и сумма на руки для 2000 сотрудников.
Sub salary_cycle() Dim h As Long, r As Long, s As Double, id As Integer Dim Fund As Long, i As Integer For i = 1 To 2000 id=Val(InputBox("Код сотрудника")) h = Val(InputBox("Количество отработанных часов")) r = Val(InputBox("Почасовая оплата")) If h = 0 Or r = 0 Then Exit For End If s = h * r Fund = s * 0.13 s = s – Fund MsgBox "Код сотрудника " & id & ", сумма на руки " & s Next i End Sub |
Если введены нулевые значения количества отработанных часов или размера почасовой оплаты, то происходит немедленный выход из цикла (дополнительное условие выхода из цикла). При нормальном выходе из цикла значение счетчика цикла равно 2001.
В процедуре просматриваются первые двадцать ячеек столбца A, начиная с последней. Обнаруженные отрицательные числа меняют знак и размещаются в последовательных ячейках столбца B, начиная с первой.
Public Sub neg_forward() Dim i As Integer, j As Integer j = 1 For i = 20 To 1 Step –1 If Cells(i, 1).Value < 0 Then Cells(j, 2) = –Cells(i, 1) j = j + 1 End If Next i End Sub |
Запись Cells(i,1).Value позволяет проанализировать значение i-ой ячейки первого столбца. Название свойства Value объекта Range можно не указывать, т.к. оно является свойством по умолчанию.