- •Содержание
- •Раздел 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. Основные формы записи алгоритмов
- •Понятие "алгоритм"
- •Классификация алгоритмов
- •Способы записи алгоритмов
- •Запись на естественном языке
- •Изображение алгоритма в виде графических символов
- •Представление основных типов алгоритмов в виде блок-схем
Методы Move и Select
Метод Move используется для перемещения листов.
Синтаксис expression.Move([Before] [,After])
expression – ссылка на объект, представляющий перемещаемый лист. Указание обязательно.
Необязательные параметры before и after (ссылки на лист, см. описание метода Add) определяют новое местоположение перемещаемого листа. Если не указан ни один из параметров, то лист перемещается во вновь создаваемую рабочую книгу.
Метод Select выделяет объект. При применении к одному листу методы Activate и Select активизируют указанный лист. Но метод Select используется для группировки листов, т.е. для расширения выделения.
Синтаксис expression.Select([Replace])
expression – ссылка на объект, представляющий выделяемый лист. Указание обязательно.
Replace – для расширения выделения аргумент устанавливается в False. Если аргумент не задан или принимает значение True, то вместо старой области выделения создается новая область выделения. Необязательный параметр.
Замечание
Для выделения листов с конкретными именами используйте функцию Array. Например, Sheets(Array("Лист8", "Лист12")).Select.
Пример
Процедура перемещает нечетные листы в конец рабочей книги. В цикле выделяются нечетные листы.
Public Sub move_sheets()
Dim n As Integer, I As Integer
n = ActiveWorkbook.Sheets.Count ‘количество листов в книге
For I = 1 To n Step 2
Sheets(I).Select (False) 'аргумент False метода Select означает группировку листов.
Next I
ActiveWindow.SelectedSheets.Move after:=Sheets(Sheets.Count) 'Свойство SelectedSheets
'объекта Window возвращает коллекцию Sheets, состоящую из выделенных листов
End Sub
Событийные процедуры
Чтобы вставить событийную процедуру для объекта WorkSheet
выделите объект WorkSheet (например, Лист1) в окне проекта;
перейдите на лист процедур этого объекта;
на процедурном листе в окне объектов (вверху слева) выберите объект WorkSheet;
в окне выбора событий (вверху справа) выберите событие.
запишите текст процедуры.
При выборе события автоматически вставляется процедура со стандартным именем, состоящим из названия листа и названия события, разделенных нижним подчеркиванием (_);
Пример
Private Sub Worksheet_Activate() Range("a1").Value = ActiveSheet.Name End Sub |
При активизации листа Лист1 в ячейку A1 заноситcя название листа. |
Объект Range
При работе в MS Excel чаще всего выполняются некоторые действия с группой ячеек рабочего листа. Объект Range – это отдельная ячейка, целиком строка или столбец рабочего листа, выделенный интервал ячеек, непрерывный интервал ячеек или интервал несмежных ячеек.
Для задания объекта Range существуют различные возможности. Например, благодаря свойству ActiveCell, активная ячейка представляется в качестве объекта Range. Свойство Selection определяет выделенный интервал ячеек в качестве объекта Range.
Свойства и методы, возвращающие объект Range
Свойства и методы |
Применимы к объектам |
Примеры и комментарии |
Свойство ActiveCell |
Application |
Оператор ActiveCell.Value=10 устанавливает значение активной ячейки равным 10 |
Свойство Areas |
Range |
Оператор Range("A1, B5:B10, C12:C20").Areas(3).Value = 10 устанавливает значение 10 для третьей области объекта Range – для ячеек интервала C12:C20 |
Свойство Cells |
Application, Range, Worksheet |
Оператор Cells(7,3).Select активизирует ячейку C7 и равносилен оператору Range("C7").Select |
Свойство Columns |
Application, Range, Worksheet |
Оператор Columns("A:D").Select выделяет первые четыре столбца |
Свойство CurrentRegion |
Range |
Оператор ActiveCell.CurrentRegion.Count подсчитывает количество ячеек с данными в интервале, окружающем активную ячейку |
Свойство Offset |
Range |
Операторы Range ("A2:B10").Select, Selection.Offset(2,2).Value=10 устанавливают значение 10 каждой ячейки интервала C4:D12. Равносильно записи Range("C4:D12").Value=10 |
Свойство Range |
Application, Range, Worksheet |
Операторы p=Range("A:B").Count, p=Range("налог").Count, p=ActiveSheet.Range("A1:A10").Count, p=Range("1:3").Count, p=Range("A1:C2, B10:D24").Count присваивают переменной p количество ячеек в заданных интервалах |
Свойство Rows |
Application, Range, Worksheet |
Оператор Rows("1:3").Select выделяет первые три строки |
Свойство Selection |
Application |
Оператор Selection.Clear очищает выделенный интервал ячеек |
Метод Union |
Range |
Union(Range("A1:C5"), Range("B10"D12") объединяет два несмежных интервала в один объект Range |
Замечание
Все перечисленные свойства, возвращают объект Range, не активизируя новую ячейку.
Ячейка остается активной до тех пор, пока методы Activate или Select не активизируют новую ячейку.