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

  • Работа с элементами управления на рабочих листах Excel

  • Описание процедуры [Public l Private ] Sub

  • Операторы Условный оператор Однострочная форма (когда в каждой ветви не более одного оператора):If Then [Else ]

  • End If Операторы цикла

  • Примеры

  • Краткий справочник по VBA. Справочник по vba краткий справочник по vba


    Скачать 87.5 Kb.
    НазваниеСправочник по vba краткий справочник по vba
    АнкорКраткий справочник по VBA.doc
    Дата16.10.2017
    Размер87.5 Kb.
    Формат файлаdoc
    Имя файлаКраткий справочник по VBA.doc
    ТипСправочник
    #9452



    ХПИ. ЭКММ. Курс «СППР». Лабораторные работы. Справочник по VBA


    Краткий справочник по VBA
    Работа в редакторе VBA

    Редактор VBA вызывается из меню: Сервис\Макрос\Редактор Visual Basic (или сочетаниие клавиш Alt-F11). Возвратиться из редактора VBA в рабочую книгу можно нажатием кнопки Вид Microsoft Excel (View Microsoft Excel), или тем же сочетанием клавиш (Alt-F11).

    Работа с элементами управления на рабочих листах Excel

    На рабочем листе для добавления элементов управления необходимо отобразить панель инструментов «Элементы управления»:

    .

    Для работы с элементами управления в период их конструирования в Excel используется режим конструктора, который активизируется нажатием соответствующей кнопки. В этом режиме отключена реакция элемента управления на события. Поэтому при включенном режиме конструктора можно видоизменять элемент управления и задавать его свойства. Двойное нажатие на элементе управления в этом режиме вызывает окно редактора VBA.

    После создания элемента управления повторное нажатие кнопки режима конструктора выключает этот режим.

    Синтаксис языка VBA

    Основные отличия синтаксиса языка VBA от синтаксиса языка Паскаль:

    - точка с запятой ";" не ставится

    - оператором присвоения является символ равно =

    - комментарии отделяются верхней одинарной кавычкой ' или зарезервированным словом Rem

    - ссылка на ячейку в программе (например, А3):

    Worksheets("имя листа").Cells(3,1).Value

    или так:

    Worksheets("имя листа").Range("А3").Value

    А для текущего листа просто:

    Cells(3,12).Value

    или так:

    Range("А3").Value

    - цикл завершается специальным словом Next


    Описание процедуры
    [Public l Private] Sub ИмяПроцедуры (СписокФормальныхПараметров)

    ОператорыТелаПроцедуры

    End Sub
    Типы данных

    В VBA имеется много различных типов данных.

    В таблице представлены типы, которые наиболее часто используются:

    Тип

    Описание

    Integer

    Single

    Double

    String

    Date

    Variant

    Целое число

    Число с плавающей точкой одинарной точности

    Число с плавающей точкой двойной точности

    Текстовая строка

    Дата и время

    Любое значение из перечисленных выше


    Значение текстового поля на форме имеет строковый тип. Поскольку текстовые поля используются для ввода данных (в частности и числовых), которые в дальнейшем могут участвовать в ходе выполнения программы в различных вычислениях, то во избежание ошибок вычислений необходимо введенные данные преобразовывать к числовому типу. Для этого в VB имеется ряд функций, представленных в таблице. (где х – выражение).

    Функции преобразования типов

    Функция

    Тип результата

    CInt (x)

    Integer

    CBool (x)

    Boolean

    CByte (x)

    Byte

    CCur (x)

    Currency

    CDate (x)

    Date

    CDbl (x)

    Double

    CLng (x)

    Long

    CSng (x)

    Single

    CVar (x)

    Variant

    CStr (x)

    String



    Описание переменных

    Инструкция Dim предназначена для описания типа данных переменной на уровне модуля или процедуры. Например, следующая инструкция описывает переменную с типом integer:

    Dim N As Integer
    Инструкция Dim предназначена также для описания объектного типа переменных. Далее приводится описание переменной для нового экземпляра рабочего листа:

    Dim X As New Worksheet
    Если тип данных или тип объекта не задан, то по умолчанию переменная получает тип variant. Для обязательного описания всех переменных надо поместить в начале модуля инструкцию Option Explicit. Использование этой инструкции полезно при отладке программ, т. к. она позволяет легче отслеживать возможную путаницу в именах при наборе программы.

    Каждая переменная должна описываться отдельно! Ниже только вторая переменная определена как целого типа, первая имеет тип данных variant:

    Dim M, N As Integer
    Если необходимо описать переменную, доступную в различных подпрограммах, то она описывается специальной директивой Public вне локальных подпрограмм.
    Массивы

    Инструкция Dim может использоваться для объявления массивов. Примеры объявления массивов:

    Dim B(3, 3) As Single

    Dim A(12) As Integer

    Первая строка объявляет двумерный массив 3x3 (матрицу), состоящий из действительных чисел. Вторая строка объявляет одномерный массив (вектор) из 12 целых чисел, причем по умолчанию первый элемент массива будет А(0), а последний А(11). В этом случае говорят, что 0 — базовый индеке. Можно изменить базовый индекс, написав в начале листа модуля инструкцию Option Base1. После этого индексы массивов А и В будут начинаться с единицы. Другим способом изменения начального (базового) индекса является его явное указание при объявлении массива:

    Dim B(1 То 3, 1 То 3) As Single

    Dim A(1 To 12) As Integer
    Массив в программе определяется поэлементно. Например:

    Dim B(1 To 2, 1 То 2) As Single

    B(1,1)=2

    В(1,2)=4

    В(2,1)=1
    Динамические массивы

    Иногда в процессе выполнения программы требуется изменять размер массива. В этом случае первоначально массив объявляют как динамический. Для этого при объявлении массива не надо указывать размерность, например:

    Dim R() As Single

    В программе следует вычислить необходимый размер массива и связать его с некоторой переменной, например n, затем изменить размер динамического массива с помощью оператора ReDim.

    ReDim R(l To n)
    Операторы
    Условный оператор

    Однострочная форма (когда в каждой ветви не более одного оператора):

    If <условие> Then <оператор> [Else <оператор>]
    Блочная форма (когда в каждой ветви более одного оператора):

    If <условие> Then

    <операторы1>

    Else

    <операторы2>

    End If
    Расширенная модификация блочной формы (когда несколько условий):

    If <условие1> Then

    <операторы1>

    ElseIf <условие2> Then

    <операторы2>

    ...

    [Else

    <операторыN>]

    End If
    Операторы цикла

    В языке VBА есть два вида операторов цикла: условный и со счетчиком.

    Условный цикл:

    а) с верхним окончанием

    Do {While | Until} <условие>

    <операторы тела цикла>

    Loop

    б) с нижним окончанием (используется тогда, когда операторы тела цикла должны выполняться хотя бы один раз)

    Do

    <операторы тела цикла>

    Loop {While | Until} условие

    Оператор Exit Do обеспечивает немедленный выход из цикла.

    Цикл со счетчиком (используется, если число повторений известно заранее):

    For счетчик = начальное значение То конечное значение Step шаг

    операторы тела цикла

    Next счетчик

    Если конструкция Step опущена, то подразумевается шаг =+1.

    Оператор немедленного выхода из цикла Exit For.
    Оператор выбора

    Select Case <выражение

    Case <списоквыражений1 <оператор1>

    Case <списоквыражений2 <оператор2>



    [Case Else <оператор else> ]

    End Select
    Встроенные диалоговые окна
    InputBox - выводит на экран диалоговое окно, содержащее сообщение, и поле ввода, устанавливает режим ожидания ввода текста пользователем или нажатия кнопки, а затем возвращает значение типа string, содержащее текст, введенный в поле.

    Синтаксис:

    InputBox (prompt [, title] [, default] [, xpos] [, ypos] [, helpfile, context])

    Аргументы:

    prompt – строковое выражение, отображаемое как сообщение в диалоговом окне. Строковое значение prompt может содержать несколько строк. Для разделения строк допускается использование символа возврата каретки (Сhr(13)), символа перевода строки (chr (10)) или комбинацию этих символов (Chr( 13) & Chr (10))

    title – строковое выражение, отображаемое в строке заголовка диалогового окна. Если этот аргумент опущен, в строку заголовка помещается имя приложения

    default – строковое выражение, отображаемое в поле ввода как используемое по умолчанию, если пользователь не введет другую строку. Если этот аргумент опущен, поле ввода изображается пустым

    xpos – числовое выражение, задающее расстояние по горизонтали между левой границей диалогового окна и левым краем экрана. Если этот аргумент опущен, диалоговое окно выравнивается по центру экрана по горизонтали

    ypos – числовое выражение, задающее расстояние по вертикали между верхней границей диалогового окна и верхним краем экрана. Если этот аргумент опущен, диалоговое окно помещается по вертикали примерно на одну треть высоты экрана
    Для вывода результата можно использовать оператор MsgBox, который в простейшем случае имеет вид:

    MsgBox <”Сообщение”>
    Более сложный синтаксис имеет функция MsgBox. Эта функция выводит на экран диалоговое окно, содержащее сообщение, и устанавливает режим ожидания нажатия кнопки пользователем, а затем возвращает значение типа integer, указывающее, какая кнопка была нажата.

    Синтаксис: MsgBox (prompt [, buttons] [, title] [, helpfile, context])

    Аргументы:

    prompt – строковое выражение, отображаемое как сообщение в диалоговом окне

    buttons – числовое выражение, представляющее сумму значений, которые указывают число и тип отображаемых кнопок, тип используемого значка, основную кнопку и модальность окна сообщения. Значение по умолчанию этого аргумента равняется 0(VbOKOnly), 1= VbOKCancel, 2=VbAbortRetryIgnore, 3= vbYesNoCancel, ….

    title – строковое выражение, отображаемое в строке , заголовка диалогового окна. Если этот аргумент опущен, в строку заголовка помещается имя приложения

    helpfile – строковое выражение, определяющее имя файла справки, содержащего справочные сведения о данном диалоговом окне. Если этот аргумент указан, необходимо указать также аргумент context

    context – числовое выражение, определяющее номер соответствующего раздела справочной системы. Если этот аргумент указан, необходимо указать также аргумент helpfile

    Возвращаемые результаты:

    vbOK = 1, vbCancel = 2, …, vbYes =6, vbNo =7.

    Примеры
    Пример 1.

    Объявляется глобальная переменная для хранения суммы, при нажатии кнопки появляется окно ввода числа и оно добавляется к сумме, ответ сообщается ещё в одном окне.

    Public Sum As Single

    Private Sub CommandButton1_Click()

    Sum = Sum + InputBox("Введите число", "Обязательный ввод", 0)

    MsgBox "Sum= " + Str(Sum)

    End Sub

    Пример 2.

    Пример цикла, работающего до момента прекращения пользователям (по фопросу в диалоговом окне), запускается по кнопке.
    Private Sub CommandButton2_Click()

    Dim i As Integer 'счетчик итераций цикла

    Dim Final As Integer

    i = 0 'ноль итераций в начале

    Final = 1 'продолжать пока 1

    Do While Final = 1

    i = i + 1

    Final = MsgBox("Продолжать ?", vbOKCancel)

    Loop

    MsgBox "Прошло итераций " + Str(i)

    End Sub
    Тот же пример реализованный циклом с постусловием
    Private Sub CommandButton3_Click()

    Dim Final As Integer

    i = 0 'ноль итераций в начале

    'Final = 1 продолжать пока 1- уже НЕ НУЖНА-цикл с постусловием

    Do

    i = i + 1

    Final = MsgBox("Продолжать ?", vbOKCancel)

    Loop While Final = 1

    MsgBox "Прошло итераций " + Str(i)

    End Sub
    Пример 3.

    В процедуре объявляется динамический массив, вводится число его элементов, массив изменяется, заполняется циклом и считается сумма его элементов.

    Private Sub CommandButton1_Click()

    Dim A() As Single ‘динамический массив

    Dim N As Integer 'размер массива

    Dim sum As Single 'сумма элементов

    Dim i As Integer 'счетчик цикла

    N = InputBox("Введите число элементов массива", "Введите число", 5)

    ReDim A(l To N)

    For i = 1 To N

    A(i) = InputBox("Введите элемент " + Str(i) + " й", "Обязательный ввод", 0)

    sum = sum + A(i)

    Next i

    MsgBox "Сумма элементов " + Str(sum)

    End Sub

    РАЗДАТОЧНЫЙ МАТЕРИАЛ


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