Главная страница
Навигация по странице:

  • 2.8.5. Просмотр объектов

  • Object Browser

  • Activate Method

  • 2.8.6. Использование справочной системы

  • 2.8.6.1. Использование функциональной клавиши F1

  • 2.8.6.2. Использование помощника

  • What add the new worksheet

  • 2.9. Ввод и вывод данных

  • 2.9.1. Функция MsgBox

  • Таблица 1.

  • Таблица 2

  • Константа Значение Номер основной кнопки

  • Константа Значение Нажатая кнопка

  • 2.9.2. Функция InputBox

  • Программирование VBA. Федеральное агентство по образованию государственное образовательное учреждение высшего профессионального образования


    Скачать 2.93 Mb.
    НазваниеФедеральное агентство по образованию государственное образовательное учреждение высшего профессионального образования
    АнкорПрограммирование VBA.pdf
    Дата24.04.2017
    Размер2.93 Mb.
    Формат файлаpdf
    Имя файлаПрограммирование VBA.pdf
    ТипУчебное пособие
    #4339
    страница4 из 13
    1   2   3   4   5   6   7   8   9   ...   13
    2.8.4.3. Объект Range
    В VBA ячейки рабочего листа трактуются как объект Range. Среди всех объектов Excel этот объект используется наиболее часто.
    В качестве объекта Range могут выступать:
     отдельная ячейка;
     выделенный диапазон ячеек;
     несколько выделенных диапазонов ячеек (т.е. совокупность не- смежных диапазонов);
     строка и столбец;
     трехмерный диапазон (т.е. состоящий из диапазонов, расположен- ных на разных рабочих листах).
    Свойства объекта Range
    Из множества свойств объекта Range,
    которых у него несколько де- сятков, рассмотрим следующие, наиболее часто используемые.
    Address (Адрес) – возвращает текущее положение диапазона.
    Count (Счет) – возвращает количество ячеек в диапазоне.
    Formula (Формула) – возвращает формулу, по которой вычисляет- ся значение, отображаемое в ячейке.
    Offset
    (Смещение) – возвращает величину смещения одного диа- пазона относительно другого.
    Resize (Изменение размеров) – позволяет изменять текущее вы- деление диапазона.
    Value (Значение) – возвращает значения ячеек, составляющих диапазон.
    Пример
    На листе Лист1 в ячейке B4 находится число 4 и в ячейке A1 – формула
    =B4. В модуле Module1 хранится процедура СвойстваДиапазона:
    Sub СвойстваДиапазона()
    Worksheets("Лист1").Range("A1:B2").Activate
    MsgBox "Количество ячеек в диапазоне " & Range("A1:B2").Count
    MsgBox "Текущая ячейка " & ActiveCell.Address
    ActiveCell.Offset(2, 2).Activate
    MsgBox "Текущая ячейка " & ActiveCell.Address
    Range("A1").Formula = "=B4"
    MsgBox "Формула в ячейке A1 " & Range("A1").Formula
    MsgBox "Значение ячейки A1= " & Range("A1").Value
    End Sub

    32
    Инструкция
    Range("A1:B2").Activate выделяет диапазон A1:B2 рабочего листа Лист1 при помощи метода
    Activate (рис. 3).
    Рис.3. Выделение диапазона ячеек
    Функции
    MsgBox "Количество ячеек в диапазоне " & Range("A1:B2").Count
    MsgBox "Текущая ячейка " & ActiveCell.Address выводят при помощи свойств Count и Address количество ячеек в выде- ленном блоке и адрес текущей ячейки:
    Текущая ячейка получила адрес $C&3 в результате выполнения инструк- ции
    ActiveCell.Offset(2, 2).Activate свойство которой Offset(2,2) задаёт смещение на две ячейки относительно ячейки A1.
    Инструкция
    Range("A1").Formula = "=B4"
    Помещает формулу =B4 в ячейку A1.
    Функции
    MsgBox "Формула в ячейке A1 " & Range("A1").Formula
    MsgBox "Значение ячейки A1= " & Range("A1").Value

    33
    выводят на экран соответственно формулу и значение ячейки A1:
    Другими словами, свойство Value возвращает то, что отображается в ячейке, а свойство Formula – то, что находится в ячейке.
    Методы объекта Range
    Из множества методовобъекта Range,
    которых у него не больше двадцати, следующие, наиболее часто используемые.
    Рассмотрим наиболее часто используемыеметоды объекта Range.
    Activate – активизирует диапазон.
    Clear, ClearComments, ClearContents, ClearFormats, ClearNotes – очищает содержимое диапазона, позволяют убрать комментарии, содержимое ячеек, форматы и примечания.
    Сору – копирует содержимое диапазона в буфер обмена.
    Cut – перемещает содержимое диапазона в буфер обмена.
    Delete – удаляет диапазон.
    Select – выделяет диапазон.
    При удалении (метод Delete) ячейки, находящиеся рядом с уничтоженными, сдвигаются на место уничтоженных: влево, если ис- пользуется параметр xlShiftToLeft, и вверх, если используется пара- метр xlShiftUp. При очистке (метод Clear) удаляется содержимое ячеек, форматы и комментарии, но сами пустые ячейки остаются.
    Метод Сору используется для копирования диапазона в Буфер обмена и при использовании параметра destination – в другой диапа- зон.
    Пример
    В приведённом ниже примере диапазон ячеек A1:B1 листа
    Лист1 копируется в диапазон ячеек A1:B1 листа Лист2.
    Worksheets("Лист1").Select
    Worksheets("Лист1").Range("A1:B1").Activate
    Worksheets("Лист1").Range("A1:B1").Copy _ destination:=Worksheets("Лист2").Range("A1:B1")
    2.8.5.
    Просмотр объектов
    Окно просмотра объектов Object Browser позволяет просматривать все объекты проекта. Здесь имеются все свойства, методы и события, связанные с любым объектом. Доступ к этому окну можно получить сле- дующими способами.

    34
     Щелкнуть на кнопке Object Browser стандартной панели инструмен- тов редактора Visual Basic.
     Выполнить команду View > Object Browser (Вид > Просмотр объек- тов).
     Нажать клавишу F2.
    В окне Object Browser всегда можно найти все свойства и методы для любого объекта, быстро открыть тему справочной системы, описы- вающую выбранный объект, свойство или метод.
    Окно Object Browser
    можно использовать как обучающее и справочное средство. Опишем ра- боту в окне Object Browser.
    1. Нажать клавишу F2 для открытия окна Object Browser (рис. 4).
    2. Выбрать в Activate Method пункт Activate method as it applies to the
    Range object
    3. Выбрать в Example пункт As it applies to the Range object (рис. 6)
    4. Закрыть окно справочной системы.
    5. Закрыть окно Object Browser.
    Рис. 4. Окно доступа к объектам, свойствам, методам и событиям

    35
    Рис. 5. Метод Activate
    Рис. 6. Пример метода Activate
    2.8.6.
    Использование справочной системы
    Обратиться к справочной системе VBA можно использовать двумя способами:
     использовать функциональную клавишу F1;
     использовать “Помощника”.
    2.8.6.1. Использование функциональной клавиши F1
    Этот способ даёт возможность получить справку по всем объектам и ключевым словам VBA. Особенностью этого способа является то, что не- обходимо точно указать название сущности, по которой необходимо полу-

    36
    чить справку: имя объекта, его свойства, метода или события, ключевое слово инструкции VBA и т.п.
    В качестве примера рассмотрим получения сведений о функции
    Array.
    1. Войти в редактор Visual Basic. Это можно сделать двумя способами:
     щёлкнуть по кнопке Редактор Visual Basic или
     одновременно нажать на клавиши Alt и F11.
    2. Если в окне ProjectVBAProject нет ни одного модуля, вставить мо- дуль в текущую рабочую книгу. Для этого в окне Microsoft Visual Basic выбрать пункт меню Insert и в выпадающем окне – пункт Module
    3. В окне кода редактора Visual Basic ввести символ Одиночная кавыч-
    ка (‘), а за ней – слово array.
    4. Установить текстовый курсор внутри слова 'Array (рис.7).
    Рис. 7. Получение справки по функции Array
    5. Нажать клавишу F1. Появится справка.
    Аналогично можно получить справку по объектам, свойствам, мето- дам и событиям объекта.
    2.8.6.2. Использование помощника
    Этот способ даёт возможность получить справку только по объек-
    там VBA и их свойствам, методам и событиям. При этом можно в свобод- ной форме задать вопрос о сущности, по которой необходимо получить справку.
    Например, для получения сведений о свойствах объекта
    Worksheet нужно выполнить следующие действия.
    1. Находясь в окне Microsoft Visual Basic, следует выбрать пункт меню
    Help, и в приведённом ниже выпадающем меню

    37
    выбрать пункт “Справка: Microsoft Visual Basic”, в результате чего поя- вится “Помощник”, который предложит ввести вопрос к справочной сис- теме (рис. 8).
    Рис. 8. Помощник в окне справочной системы
    2. Ввести вопрос What add the new worksheet в окне помощникаи в появившемся диалоговом окне выбирать пункт Worksheets Property
    (рис. 9).
    Рис. 9. Вод вопроса и выбор пункта ответа
    На экран будет выведена справка Worksheets Property по свойству
    Add для рабочего листа.
    Примеры, приводимые в справочной системе, помогают при разра- ботке приложений VBA. Их содержание можно копировать непосредствен- но в разрабатываемый проект.

    38
    2.9. Ввод и вывод данных
    В этом пункте рассматриваются следующие средства ввода и вывода данных при помощи диалоговых окон:
     использование функции MsgBox;
     использование функции InputBox;
     применение метода InputBox;
     именование аргументов,
     использование объединения текстовых строк.
    2.9.1.
    Функция MsgBox
    Функция MsgBox служит для организации диалоговых окон, содер- жащих какие-либо сообщения. После своего появления на экране окно со- общения ждет, пока пользователь щелкнет на одной из кнопок, присутст- вующих в окне. В зависимости от того, на какой кнопке щелкнул пользова- тель, функция возвращает определенное целое число. Функция MsgBox имеет следующий формат:
    MsgBox (Prompt [, Buttons] [, Title] [, Helpfile, Context])
    Аргументы рассматриваемой функции означают следующее.
    Prompt (Приглашение) – обязательный аргумент этой функции. Зна- чением этого аргумента служит строка текста, которая появляется как со- общение в диалоговом окне. Эта строка текста должна быть заключена в двойные кавычки. Круглые скобки в синтаксисе MsgBox указывают на то, что в данном случае MsgBox является функцией, возвращающей какое- либо значение.
    Если скобки опущены, то для VBA это признак того, что данное вы- ражение значение не возвращает и результатом выполнения инструк- ции MsgBox является только вывод диалогового окна.
    Все остальные аргументы этой функции не обязательны.
    Buttons (Кнопки) числовое выражение, представляющее сумму зна- чений, которые указывают число и тип отображаемых кнопок, тип исполь- зуемого значка, основную кнопку и способ, каким используется окно сооб- щения; аргумент необязателен. Значение по умолчанию этого аргумента равняется 0; его можно задать в виде констант VBA или целым числом.
    Если не указан аргумент Кнопки, то VBA предполагает, что в диалоговом окне сообщения присутствует только кнопка ОК. Аргумент Кнопки позво- ляет управлять следующими параметрами окна сообщения:
     количество кнопок в окне;
     типы кнопок и их размещение в окне;
     пиктограмма, отображаемая в окне;
     какая кнопка назначается кнопкой по умолчанию;
     режим окна сообщения.

    39
    Значения констант, определяющих число и тип кнопок используемого значка, приведены в таблице 1, 2 и 3.
    Таблица 1. Значения аргумента buttons процедуры MsgBox, определяю- щие отображаемые кнопки в диалоговом окне
    Константа_Значение_Номер_основной_кнопки'>Константа
    Значение Отображаемые кнопки
    vbOKOnly
    0
    VbOKCancel
    1
    VbAbortRetrylgnore 2
    VbYesNoCancel
    3
    VbYesNo
    4
    VbRetryCancel
    5
    Таблица 2. Значения аргумента buttons процедуры MsgBox, определяю- щие отображаемые информационные значки в диалоговом окне
    Константа
    Значение
    Значок сообщения
    VbCritical
    16
    VbQuestion
    32
    VbExclamation
    48
    VbInformation
    64
    Таблица 3. Значения аргумента buttons процедуры MsgBox, определяю- щие основную кнопку в диалоговом окне
    Константа
    Значение
    Номер основной кнопки
    VbDefaultButton1 0
    1
    VbDefaultButton2 256 2
    VbDefaultButton3 512 3
    VbDefaultButton4 768 4

    40
    При написании программ, в которых в зависимости от нажатой кнопки диалогового окна необходимо выполнить определённое действие, вместо возвращаемых числовых значений удобнее использовать следующие кон- станты VBA, которые делают код программы нагляднее и позволяют избе- жать ошибок при написании программ.
    Константа
    Значение
    Нажатая кнопка vbOK
    1
    OK vbCancel
    2
    Отмена (Cancel) vbAbort
    3
    Прервать (Abort) vbRetry
    4
    Повторить (Retry) vbIgnore
    5
    Пропустить (Ignore) vbYes
    6
    Да (Yes) vbNo
    7
    Нет (No)
    Чтобы не ошибиться при вводе значений аргумента кнопки, исполь- зуйте список констант, который появляется после ввода знака "+". Знак "+" используется для объединения нескольких констант при задании сложного аргумента кнопки. Например, использование в процедуре выражения vbYesNoCancel + vbQuestion + vbDefaultButton1 приведёт к появлению кнопок
    Да,
    Нет и
    Отмена
    (константа vbYesNoCancel), значка
    (константа vbQuestion) и по умолчанию к ис- пользованию первой кнопки (константа vbDefaultButton1).
    Примечание
    Чтобы просмотреть список всех внутренних констант VBA, необходи- мо в окне программного кода VBA щёлкнуть левой кнопкой мыши по имени любой константы и нажать клавишу F1. В появившемся окне можно найти все внутренние константы Excel.
    Title (Заголовок) – содержит заголовок окна сообщения; аргумент не- обязательный. Без этого аргумента в заголовке будет выведено имя при- ложения MS Office, из которого запускается программа на VBA (Excel,
    Word и т.д.).
    Helpfile (Справка) – строковое выражение, содержащее имя справоч- ного файла Windows. Обычно это файл, созданный разработчиком прило- жения с помощью Windows Help Compiler.
    Context (Раздел) – численное выражение, указывающее раздел в справочном файле, относящийся к отображаемому диалоговому окну.
    Аргументы Helpfile и Context не обязательны. Они используются или опускаются вместе.
    Аргументы функции необходимо перечислять в том порядке, в каком они размещены в её формате. Следовательно, в функции MsgBox они должны располагаться следующим образом:
    Prompt [, Buttons] [, Title] [, Helpfile, Context])

    41
    Если какой-либо аргумент опущен, то необходимо включать в список аргу- ментов отмечающие запятые для следующего в списке аргумента.
    Пример
    В приведённой ниже процедуре ФункцияMsgBox() функция MsgBox используется для:
     определения, какая из кнопок: Да, Нет или Отмена – нажата
    (щёлкнута) в диалоговом окне этой функции;
     вывода на экран сообщения, какая кнопка была нажата и наимено- вание примера использования этой функции.
    Внутренняя константа vbExclamation используется в процедуре для выво- да в окне сообщения символа
    . Определение значения нажатой кнопки осуществляется при помощи инструкции If…Then…Else, синтаксис которой будет подробно рассмотрен в дальнейшем.
    Sub ФункцияMsgBox()
    Dim Структура As String
    Dim Кнопка As Integer
    '
    ' В переменной Структура задается структура диалогового окна
    Структура = vbYesNoCancel + vbQuestion + vbDefaultButton1
    ' В переменную Кнопка вводится целое число, возвращаемое MsgBox
    'при нажатии кнопки Да, Нет или Отмена в окне сообщения функции
    MsgBox
    '
    Кнопка = MsgBox("Выбрать Да, Нет или Отмена?", Структура, "Примеры функции MsgBox")
    '
    ' На экране отображается соответствующее сообщение '
    ' в зависимости от значения переменной Кнопка

    MsgBox "Равно " & Кнопка, , "Возвращаемое значение"
    If Кнопка = vbYes Then MsgBox "Выбрано Да", vbExclamation, "ПРИМЕР 1"
    If Кнопка = vbNo Then MsgBox "Выбрано Нет", vbExclamation, "ПРИМЕР 2"
    If
    Кнопка
    = vbCancel
    Then
    MsgBox
    "Выбрано
    Отмена", vbExclamation,"ПРИМЕР 3"
    End Sub
    Ниже приведены диалоговые окна, выведенные на экран в процессе выполнения процедуры ФункцияMsgBox(). Окна ПРИМЕР 1, ПРИМЕР 2 и
    ПРИМЕР 3 появляются при нажатии кнопок, соответственно, Да, Нет и
    Отмена. В окне Возвращаемое значение выводится число 6 при выполне- нии инструкции MsgBox "Равно " & Кнопка, , "Возвращаемое значение", ес- ли нажата кнопка Да.

    42
    2.9.2.
    Функция InputBox
    Функцию MsgBox целесообразно использовать в случае, если от пользователя надо получить типа Да–Нет или ОК–Отмена. Если необхо- димо ввести число или текст, то применяется функция InputBox. Эта функ- ция отображает запрос в диалоговом окне ввода, ожидает ввода пользо- вателем строки (или щелчка по кнопке окна) и возвращает строку из поля ввода окна. Функция InputBox имеет следующий формат:
    InputBox(Prompt[, Title] [, Default] [, Xpos] [, Ypos] [, Helpfile, Context])
    Эта функция требует обязательного задания только аргумента
    Prompt. Так же, как и в функции MsgBox, значением аргумента Prompt слу- жит текстовая строка, которая отображается в диалоговом окне ввода в качестве сообщения. Строковое значение prompt может содержать не- сколько строк. Для разделения строк допускается использование символа возврата каретки (Сhr(13)), символа перевода строки (Chr (10)) или комби- нацию этих символов (Chr( 13) & Chr (10)).
    Аргумент title используется для задания текста, который помещается в строке заголовка окна ввода. Если этот аргумент не задан, то в строке заголовка отображается слово Ввод.
    Аргумент default задает значение, которое отображается по умолча- нию в поле ввода, пока пользователь не введет свое значение. Если этот аргумент опустить, то отображается пустое поле ввода.
    Необязательные аргументы xpos и ypos задают положение окна вво- да на экране.
    xpos – числовое выражение, задающее расстояние по горизонтали между левой границей диалогового окна и левым краем экрана. Если этот аргумент опущен, диалоговое окно выравнивается по центру экрана по го- ризонтали.
    ypos – числовое выражение, задающее расстояние по вертикали ме- жду верхней границей диалогового окна и верхним краем экрана. Если

    43
    этот аргумент опущен, диалоговое окно помещается по вертикали пример- но на одну треть высоты экрана.
    Аргументы helpfile и context используются в том случае, если в при- ложении создаётся собственная система справки.
    Возвращаемым значением функции InputBox является значение, введенное пользователем в поле ввода.
    Пример
    Sub ФункцияInputBox()
    Dim Данное As Variant
    Данное = InputBox("Введите данное")
    MsgBox "Введённое данное равно " & Данное
    ActiveCell.Value = Данное
    End Sub
    Тип возвращаемого значения определен как Variant, т.е. тип опреде- ляется введенным значением.
    1   2   3   4   5   6   7   8   9   ...   13


    написать администратору сайта