Запуск интегрированной среды VBA

Основные элементы VBA

Что такое VBA

Существует целый ряд систем программирования, позволяющих в той или иной степени реализовать концепцию объектно-ориентированного подхода при разработке программных средств. К ним относятся С++, Java, Visual Basic, Object Pascal.

Язык VBA (Visual Basic for Application) – это подмножество VB, которое включает почти все его средства создания приложений, структуры данных и управляющие структуры, возможность создания пользовательских типов данных.

В отличие от VB, VBA не является языком объектно-ориентированного программирования в строгом смысле этого слова, но в нем широко используются элементы объектно-ориентированного подхода и связанные с ним понятия. С помощью VBA можно легко и быстро создавать пользовательские приложения, используя единую для всех офисных программ среду и язык. Научившись разрабатывать приложения для одной офисной программы, например Excel (в которой, как наиболее популярной офисной программе, мы будем работать), можно создавать приложения и для других офисных программ, например Access

VBA — относительно легкий язык программирования. Он прост в освоении и позволяет быстро получать ощутимые результаты — конструировать профессиональные приложения, решающие практически все задачи, встречающиеся в среде Windows. При этом создание многих приложений с использованием VBA проще и быстрее, чем при помощи других языков программирования.

Структура редактора VBA

При программировании важно знать не только язык программирования, но хорошо ориентироваться в среде разработки.

Среда VBA является интегрированной (как и DElhpi, Borland C++) средой, т.е. объединяет в себе несколько составляющих:

· Компилятор,

· Редактор текстов,

· Средства отладки,

· Визуальный конструктор форм

· И т.д.

Программный код VBA набирается в редакторе Visual Basic.

Запуск интегрированной среды VBA

Редактор VBA активизируется командой Сервис, Макрос, Редактор Visual Basic(Tools, Macro, Visual Basic Editor) или нажатием кнопки Запуск интегрированной среды VBA - student2.ru Редактор Visual Basic(Visual Basic Editor) панели инструментов Visual Basicили комбинацией клавиш <Alt>+<F11>.

В результате вы попадаете в интегрированную среду разработки приложений редактора Visual Basic.

Запуск интегрированной среды VBA - student2.ru

Возвратиться из редактора VBA в рабочую книгу можно нажатием кнопки Запуск интегрированной среды VBA - student2.ru Вид Microsoft Excel(View Microsoft Excel).

Интерфейс VBA состоит из следующих основных компонентов:

окна проекта – Project - VBAProject,

окна свойств - Properties,

Запуск интегрированной среды VBA - student2.ru

окна редактирования кода,

Запуск интегрированной среды VBA - student2.ru

окна форм,

Запуск интегрированной среды VBA - student2.ru

меню и панели инструментов.

A) Окно проекта

Окно проекта в редакторе VBA активизируется выбором команды View, Project Explorer. В окне проекта (VBAProject) представлена иерархическая структура файлов форм и модулей текущего проекта.

Запуск интегрированной среды VBA - student2.ru

В проекте автоматически создается модуль для каждого рабочего листа и для всей книги. Кроме того, модули создаются для каждой пользовательской формы, макросов и классов. По своему предназначению модули делятся на два типа: модули объектови стандартные. К стандартным модулям относятся те, которые содержат макросы. Такие модули добавляются в проект командой Вставка, Модуль(Insert, Module). К модулям объектов относятся модули, связанные с рабочей книгой, рабочими листами, формами, и модули класса.

Окно проекта Project – VBAProject –предназначено для быстрого получения информации о различных составляющих проекта.

Под проектом в редакторе VBA понимается набор всех программных модулей, связанных с документами MS Office ( в нашем случае MS Excel).

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

В окне проекта выводится проект всех открытых рабочих книг. Это позволяет легко копировать формы и коды из одного проекта в другой, что убыстряет процесс создания новых приложений

Б) Окно свойств

В окне свойств перечисляются основные установки свойств выбранной формы или элемента управления. Используя это окно, можно просматривать свойства и изменять их установки. Для просмотра свойств выбранного объекта надо выбрать команду Меню-View-Properties Window

Запуск интегрированной среды VBA - student2.ru

Окно свойств состоит из двух составных частей: верхней и рабочей. В верхней части окна свойств располагается раскрывающийся список, из которого можно выбрать любой элемент управления текущей формы или саму форму. Рабочая часть состоит из двух вкладок: По алфавиту(Alphabetic) и По категориям(Categorized), отображающие набор свойств в алфавитном порядке или по категориям. В обоих вкладках свойство Name (имя элемента управления) будет первым. Изменяются значения свойств одним из следующих способов:

· Вводом с клавиатуры значения свойства в соответствующее поле.

· Значения большинства свойств можно выбрать из раскрывающегося списка. Раскрывающийся список активизируется щелчком в соответствующем поле окна свойств.

В) Окно редактирования кода

Вызывается это окно одним из следующих способов:

· Двойным щелчком на элементе проекта в окне проекта Project

· Выбрать значок объекта в окне Project и выполнить команду Меню-View-Code

Окно редактирования кода служит в качестве редактора для ввода и изменения программного кода процедур приложения.

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

· Просмотр отдельной процедуры – левая кнопка в левом нижнем углу окна кода,

· Просмотр всех процедур модуля – правая кнопка в левом нижнем углу кода.

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

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

Г) Окно редактирования форм (UserForm)

Для создания диалоговых окон, разрабатываемых приложений в VBA, используются формы. Редактор форм является одним из основных инструментов визуального программирования. Форма в проект добавляется с помощью команды Вставка, Форма(Insert, Form). В результате на экран выводится незаполненная форма с панелью инструментов Панель элементов(Toolbox).

Запуск интегрированной среды VBA - student2.ru

Используя панель инструментов Toolboxиз незаполненной формы, можно сконструировать любое требуемое для приложения диалоговое окно. Размещение нового управляющего элемента в форме осуществляется следующей последовательностью действий:

1. Щелкните значок того элемента, который вы собираетесь разместить в форме.

2. Поместите указатель мыши на то место, где будет располагаться управляющий элемент.

3. Нажмите левую кнопку мыши и, не отпуская ее, растяните появившийся прямоугольник до требуемых размеров.

4. Отпустите кнопку мыши. Элемент управления на нужном место создан.

Размеры формы и расположенных на ней элементов управления можно изменять. Технология изменения размеров стандартная для Windows: выделить изменяемый элемент, разместить указатель мыши на одном из размерных маркеров и протащить его при нажатой левой кнопки мыши так, чтобы объект принял требуемые размеры. Окно редактирования форм поддерживает операции буфера обмена.

Запуск интегрированной среды VBA - student2.ru

Таким образом, можно копировать, вырезать и вставлять элементы управления, расположенные на поверхности формы. Для облегчения размещения и выравнивания элементов управления используется сетка. Активизировать ее можно с помощью вкладки Общие(General) диалогового окна Параметры(Options), вызываемого командой Сервис, Параметры(Tools, Options), там же устанавливается шаг сетки. Кроме того, команды меню Формат(Format) автоматизируют и облегчают процесс выравнивания элементов управления как по их взаимному местоположению, так и по размерам.

Основные понятия VBA

Объекты и их семейства

Прежде поговорим о проекте в VBA. Под проектом в редакторе VBA понимается набор всех программных модулей, связанных с документом MS Office (под документом MS Office понимаем MS Excel)

Классы

Важнейшим понятием ООП является класс. Класс обычно описывается, как проект, на основе которого впоследствии будет создан конкретный объект. Таким образом, класс определяет имя объекта, его свойства и действия, выполняемые над объектом. В свою очередь каждый объект, в соответствии с описанным выше, является экземпляром класса.

Иерархия объектов

Полная ссылка на объект состоит из ряда имен вложенных последовательно друг в друга объектов. Разделителями имен объектов в этом ряду являются точки. Ряд начинается с объекта Application и заканчивается именем самого объекта. Например, полная ссылка на ячейку A1 рабочего листа Лист1 рабочей книги с именем Архив имеет вид:

Application.Workbooks("Архив").Worksheets("Лист1").Range("Al")

Приводить каждый раз полную ссылку на объект совершенно не обязательно. Обычно достаточно ограничиться только неявной ссылкой на объект.

В неявной ссылке, в отличие от полной, объекты, которые активны в данный момент, как правило, можно опускать. В рассмотренном случае, если ссылка на ячейку A1 дана в программе, выполняемой в среде Excel, то ссылка на объект Application может быть опущена, т. е. достаточно привести относительную ссылку:

Workbooks("Архив").Worksheets("Лист1").Range("A1")

Если рабочая книга Архив является активной, то ссылку можно записать еще короче:

Worksheets("Лист1").Range("A1")

Если и рабочий лист лист! активен, то в относительной ссылке вполне достаточно ограничиться упоминанием только диапазона A1:

Range("A1")

Методы

Объект сам по себе не представляет большого значения. Намного значительнее то, какие действия можно совершать над объектом, и какими свойствами он обладает. Методкак раз и представляет собой действие, выполняемое над объектом.

Синтаксис применения метода:

Объект.Метод

В данном примере при помощи метода Quit (закрыть) закрывается приложение (объект Application).

Application.Quit

Метод можно применять ко всем объектам семейства.

В примере, приведенном ниже к семейству chartobjects (диаграммы) рабочего листа Лист1 применен метод Delete (удалить), который приводит к удалению всех диаграмм с рабочего листаЛист1:

Worksheets("Лист!").Chartobjects.Delete

Свойства

Свойствопредставляет собой атрибут объекта, определяющий его характеристики, такие как размер, цвет, положение на экране и состояние объекта, например, доступность или видимость. Чтобы изменить характеристики объекта, надо просто изменить значения его свойств.

Синтаксис установки значения свойства:

Объект.Свойство = ЗначениеСвойства

В следующем примере изменяется заголовок окна Excel посредством задания свойства Caption объекту Application:

Application.Caption = "Пример"

Свойство можно изменять сразу у всех объектов семейства. В приведенном ниже примере с помощью установки свойству visible (видимость) значения False (ложь) все рабочие листы активной книги (семейство объектов worksheets) скрываются:

Worksheets.Visible = False

Типы данных

Любая программа работает с данными. Все данные подразделяются на переменные и константы.

Переменные

Запуск интегрированной среды VBA - student2.ru Данные

Запуск интегрированной среды VBA - student2.ru Константы

Переменные – это данные, которые изменяют свое значение в программе.

Константы – это данные, которые свое значение в ходе выполнения программы не изменяют.

Все данные определяются каким-то типом данных. Тип данных относится к фундаментальным понятиям любого языка программирования.

Идентификаторы

Идентификатор это имя, которое присваивается переменной, константе, процедуре, макросу, модулю, функции или другим элементам программы.

Вводимые пользователем имена (идентификаторы) должны отражать суть обозначаемого объекта так, чтобы делать программу легко читаемой. В VBA имеются следующие ограничения на имена:

· Длина имени не должна превышать 255 символов.

· Имя не может содержать точек, пробелов и следующих символов: %, .&,!, #, @, $.

· Имя может содержать любую комбинацию букв, цифр и символов, начинающуюся с буквы.

· Имена должны быть уникальны внутри области, в которой они определены.

· Не следует использовать имена, совпадающие с ключевыми словами VBA и именами встроенных функций и процедур

Хотя регистр букв(верхний или нижний) в имени не имеет значения, умелое использование его может существенно облегчить понимание содержательной стороны переменной. Например, вместо плоских и невыразительных имен. Т.е. имена не чувствительны к регистру

Правильные имена:

Отчет

Pay_Day

Line2

Неправильные имена

New Item – содержит пробел

5St – начинается не с буквы

Dim – дублирует ключевое слово

Wik#Day- содержит недопустимый символ

Переменные

Объявление переменной

В Visual Basic for Application существует явное и неявное объявление переменной. Явное объявление означает указание имени и типа переменной перед ее использованием. Если тип переменной не указан, или она не объявлена, то считается, что она объявлена неявно.

Объявление переменной осуществляется при помощи инструкций Dim, Private, Static, Public, которые имеют следующий синтаксис:

Синтаксис объявления переменных

Dim имяПеременной [As типДанных]

Private имяПеременной [As типДанных]

Static имяПеременной [As типДанных]

Public имяПеременной [As типДанных]

Например

Dim a As Integer

Dim d1 As String

Если тип данных при объявлении переменных опущен, то переменная объявлена неявно и по умолчанию получает тип Variant

Константы

Константы – это данные, которые не изменяют свое значение во время выполнения программы.

Синтаксис объявления констант

[Public | Private] Const < Имя константы > [As Тип] = < Выражение >

Аргументы:

       
  Public Ключевое слово, используемое на уровне модуля для описания констант, доступных всем процедурам во всех модулях. Не допускается в процедурах.  
  Private Ключевое слово, используемое на уровне модуля для описания констант, доступных только внутри модуля, в котором выполняется описание. Не допускается в процедурах.  
  ИмяКонстанты Имя константы, удовлетворяющее стандартным правилам именования переменных  
  Тип Один из поддерживаемых типов данных: Byte, Boolean, Integer, Long, Currency, Single, Double. Decimal (в настоящее время не поддерживается), Date, string или variant. Для каждой описываемой константы следует использовать отдельное предложение AS тип  
  Выражение Литерал, другая константа или любое сочетание, которое включает все арифметические или логические операторы, за исключением is  

Пример:

Const ПроцентнаяСтавка As Single = 0.2

Const Фирма = "OOO Бескрайние просторы"

Область действия констант определяется, так же как и в случае с переменными. Т.е. константа, объявленная в процедуре, имеет область действия процедурного уровня. Если константа объявлена в области модуля, то область действия данной константы модульного уровня.

Если константа объявлена

Const < Имя константы > = < Выражение >,

то константа имеет тип, согласующийся с типом выражения.

Например:

Const b=”Весна” ‘ b типа string

Массивы

Массив представляет собой набор переменных одного типа с одним именем и разными индексами. Каждая такая переменная называется элементом массива. Количество хранящихся в массиве элементов называется размером массива.

Обращение к элементу массива осуществляется указанием имени массива, за которым в круглых скобках указывается индекс массива.

Например,

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

B(1,1)=2

В(1,2)=4

В(2,1)=1

В(1,2)=6

Описание массивов

Массив, как любую переменную, надо объявлять используя инструкции:

Dim, Static, Privat, Public

a) Объявление статических массивов (базовый индекс)

В статическом массиве допускается до 60 размерностей.

Статические массивы могут быть объявлены одним из следующих способов:

Ø Dim <имя массива> (<количество элементов массива>) [As <тип элементов>]

Ø Dim <имя массива> (<начальное значение индекса> To <конечное значение индекса>) [As <тип элементов>]

Например:

Dim A(11) As Integer – объявлен одномерный массив, состоящий из 12 целых чисел. Причем, по умолчанию первый элемент массива А(0), а последний А(11). В этом случае говорят, что 0 – базовый индекс

Dim B(2,2) As Single – матрица В(3*3) действительных чисел

Dim S (1 To 7) As Integer – одномерный массив, содержащий семь элементов целого типа.

Dim V As (1 To 5, 1 To 7) As Double – двухмерный массив, у которого 5 строчек и 7 столбцов вещественных элементов.

Можно изменить базовый индекс, написав в области объявления модуля директиву Option Base

Например

Option Base 1

Dim A(11) As Integer - объявлен одномерный массив, состоящий из 11 целых чисел.

Dim B(2,2) As Single – матрица В(2*2) действительных чисел

Инициализацию элементов массива можно производить по разному:

Ø Последовательностью операторов

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

B(1,1)=2

В(1,2)=4

В(2,1)=1

В(1,2)=6

Ø Оператором цикла

Dim F (1 To 9, 1 To 11) As Integer

Dim i As integer

Dim j As integer

For i=1 to 9

For j=1 to 11

F(i,j)=i*j

Next j

Next i

Пример

Public Sub massiv()

Dim A(11) As Integer

For i = 0 To 11

A(i) = i

MsgBox "a(" & i & ")=" & A(i)

Next i

End Sub

Б) Динамические массивы

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

Синтаксис объявления динамического массива

Ø Dim <имя массива> ( ) [As <тип элементов>]

Затем в программе следует вычислить необходимый размер массива в некоторой переменной и изменить размер динамического массива. С помощью инструкции ReDim

ReDim <имя массива> (<размерность массива>)

Допустимо повторное использование инструкции ReDim для изменения числа элементов и размерностей массива

Например

Dim R() As Single

ReDim R(l To 10)

ReDim R(5,10)

10.7 Выражения и операции

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

Массивы

Функции

Арифметические

Запуск интегрированной среды VBA - student2.ru Отношения

Запуск интегрированной среды VBA - student2.ru Запуск интегрированной среды VBA - student2.ru Операции Логические

Запуск интегрированной среды VBA - student2.ru Текстовые

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

А) Арифметические операции:

+ - сложение;

- - вычитание;

* - умножение;

/ - деление;

\ - целочисленное деление;

Mod – остаток от целочисленного деления;

^ - возведение в степень

Например:

Dim x As Double, y As Double, z As Double

х=5 : y=3

Z=x+y

Z=x-y

Z=x*y

Z=x/y

Z=x\y ‘ целочисленное деление z=1

Z=x mod y ‘ остаток от целочисленного деления z=2

Z=x^y

Б) Операции отношения

>, <, >=, <=, <>, =

Например:

Dim x As Double, y As Double, z As Double, b As Boolean

X=5 : y=3

B= (x<y)

B= (x>y)

B= (x<=y)

B= (x>=y)

B= (x<>y)

B= (x=y)

В) Логические операции

Операция Наименование
Not And Or Отрицание Конъюнкция (умножение) Дизъюнкция (сложение)

Значения элементарных логических выражений приведены в таблице ниже

Таблица – Результат логических операций

A B not A A and B A or B A or B
True True False False True False True False False False True True True False False False True True True False False True True False

Г) Текстовые операции

Сложение строк. Для сложения строк допустимо использование операции +, но предпочтительнее, во избежание путаницы, применять операцию со знаком &

Д) Приоритеты операций

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

Ø Операции в скобках

Ø Вычисление функций

Ø Возведение в степень

Ø Смена знака

Ø *, /, \, mod

Ø +, -

Ø >,>=, <, <=, <>, =

Ø Not

Ø And

Ø Or

\

Встроенные функции VBA

В VBA имеется большой набор встроенных функций и процедур, использование которых существенно упрощает программирование. Эти функции можно разделить на следующие основные категории:

  • Математические функции
  • Функции проверки типов
  • Функции преобразования форматов
  • Функции обработки строк
  • Функции времени и даты

Ниже рассмотрены основные функции из этих категорий.

Математические функции

В VBA имеется большой список математических функций, позволяющих произвести любые вычисления.

         
  Функция Возвращаемое значение    
  Abs (число) Atn (число) Cos (число) Модуль (абсолютная величина) числа Арктангенс Косинус    
         
       
  Ехр (число) Экспонента, т. е. результат возведения основания натурального логарифма в указанную степень  
  Log (число) Натуральный логарифм  
  Rnd Rnd (число) Возвращает случайное число из интервала [0,1]   Если число меньше нуля, то Rnd возвращает каждый раз одно и то же число, используя аргумент в качестве опорного числа; если число больше нуля или аргумент опущен, то — следующее случайное число в последовательности; если число равняется нулю, то — случайное число, возвращенное при предыдущем вызове этой функции. Public Sub Процедура_RND() x = Rnd(-2) MsgBox "x=" & x End Sub Перед вызовом функции Rnd используйте инструкцию Randomize без аргумента Public Sub Процедура_RND() Randomize x = Rnd(-2) MsgBox "x=" & x End Sub  
  Sgn (число) Знак числа Public Sub Процедура_RND() Randomize x = Rnd(-2) MsgBox "x=" & x z = -5 y = Sgn(z) MsgBox "y=" & y End Sub  
  Sin (число) Синус  
  Sqr (число) Квадратный корень из числа  
  Tan (число) Тангенс  
  Fix (число) и Int (число) Обе функции, int и Fix, отбрасывают дробную часть числа и возвращают целое значение. Различие между функциями int и Fix состоит в том, что для отрицательного значения аргумента число функция int возвращает ближайшее отрицательное целое число, меньшее либо равное указанному, a Fix — ближайшее отрицательное целое число, большее либо равное указанному Например: Int(2.3)=2 fix(2.3)=2 Int(2.8)=2 fix(2.8)=2 Int(-2.3)=-3 fix(-2.3)=-2 Int(-2.3)=-3 fix(2.3)=-2    
  Round(E[,N]) Округляет число, округленное до определенного количества (N) десятичных знаков Public Sub as1() Dim d As Double d = 2.567 MsgBox Round(d, 1) 'выведет 2.6 End Sub  
       
             

Примеры создания последовательности случайных чисел

1.

Public Sub случайное_число()

Randomize

For i = 1 To 3

s = Rnd

MsgBox "Случайное число=" & s

Next i

End Sub

Public Sub qqq()

Dim mv, ms As String

Randomize

ms = " "

For i = 0 To 9

mv = Int((6 * Rnd) + 1)

ms = ms & " " & mv

Next

MsgBox ms

End Sub

Преобразование строки в число и обратно осуществляют следующими функциями.

       
  Val (строка) Возвращает числа, содержащиеся в строке, как числовое значение соответствующего типа  
  Str (число) Возвращает значение типа variant (String), являющееся строковым представлением числа  
       

В качестве допустимого десятичного разделителя функция str воспринимает только точку. При наличии другого десятичного разделителя (например, запятой) для преобразования чисел в строки следует использовать функцию cstr, описанную ниже.

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

В VBA имеются следующие функции преобразования типов выражений из данного в указанный.

Функция Тип, в который преобразуется выражение
CBool (Выражение) Boolean
CByte (Выражение) Byte
CCur (Выражение) Currency
CDate (Выражение) Date
СDbl (Выражение) Double
CDec (Выражение) Decimel
CInt (Выражение) Integer
CLng (Выражение) Long
CSng (Выражение) Single
CVar (Выражение) Variant
CStr (Выражение) String Public Sub Процедура_RND() Randomize x = Rnd(-2) MsgBox "x=" & x z = -5 y = Sgn(z) MsgBox "y=" & y c = Val(x) MsgBox "c=" & c b = Str(x) MsgBox "b=" & b v = CStr(x) MsgBox "v=" & v End Sub
   

Функции обработки строк

В VBA имеются следующие функции обработки строковых выражений.

       
  Функция Возвращаемое выражение  
  Asc (строка) Возвращает код символа, соответствующий первой букве строки Public Sub zx() Dim ms As String d = Asc("Привет") MsgBox "d=" & d End Sub d=207  
  Chr (число) Возвращает строку из одного символа, соответствующего коду числа, т.е возвращает символ, которому соответствует число d = Chr(207) MsgBox "d=" & d d= П  
  Mid(S,N1[,N2]) Возвращает строку, содержащую N2 (если указано, если не указано - то до конца строки) символов, начиная с позиции N1. Первое_слово=mid(“Mid Function Examle”,1,3) ‘Первое_слово=“Mid”  
  Len(S) Возвращает число символов строки S(включая начальные и конечные пробелы).  
  Left(S,N) Возвращает подстроку, состоящую из заданного N числа символов, начиная с левого края строки S. S=”Мама мыла раму” S1=Left(S,4) ‘S1=Мама  
  Right(S,N) Возвращает подстроку, состоящую из заданного N числа символов, начиная с правого края строки S. S=”Мама мыла раму” S1= Right (S,4) ‘S1= раму  
  InStr([N,]S1,S2) Возвращает позицию положения строки S2 в строке S1. При наличии N поиск начинается с позиции N. s1=”Abcdef” i= InStr(s1,”cd”) ‘i=3 s1=”Abcdcdef” i= InStr(4,s1,”cd”) ‘i=5 s1=”Abcdef” i= InStr(s1,”k”) ‘i=0 Если S2 в S1 не обнаружено, то результат = нулю  
       

Оформление программного кода

Комментарии

В программный код можно включит любой произвольный текст, т.е. комментарии. Комментарии, поясняющие текст программы, делают ее более читаемой. Текст, следующий в программе за символом “ ‘ “ вплоть до конца строки, игнорируется компилятором и представляет собой комментарии.

Операторы VBA

Оператор – это языковая конструкция, представляющая описание команды или комплекса команд по обработке и преобразованию данных.

Оператор присваивания

Оператор присваивания присваивает значение выражения переменной, константе или свойству объекта.

Синтаксис оператора присваивания:

<идентификатор>=<выражение>

Например

X=2

Y=”Привет”

Стоимость=x*kol

TextBox1.Visible=True;

CommandButton1.Caption=”Вычислить”

Работа: вычисляется значение <выражения> присваивается полученное значение <идентификатору>

 
  Запуск интегрированной среды VBA - student2.ru

Пример.

Вычислить значение функции f(x,y)=|x|+sin2(y+5).

Public Sub prog1()   Dim x As Double, y As Double Dim f As Double x=CDbl(InputBox("Введите х")) y=CDbl(InputBox("Введите y"))     f = Abs(x) + Sin(y + 5) ^ 2     MsgBox "Результат = " & f     End Sub Заголовок процедуры prog1 (начало программы) Описание переменных: переменные x,y,f вещественного типа (Double) Ввод значений х и у. Функция InputBox выводит на экран окно с полем ввода и сообщением «Введите х» и возвращает значение типа строка (String). Для преобразования вводимого значения к вещественному типу – Double- используется функция CDbl. Вычисление значения переменной f: функция Abs(аргумент) возвращает модуль аргумента, Sin(аргумент) – синус аргумента, ^ - степень числа. Процедура MsgBox выводит на экран окно сообщений с текстом «Результат = 12» (если f=12). Конец программы.

Запуск интегрированной среды VBA - student2.ru

Организация ввода-вывода данных

Ввод и вывод данных в VBA может выполняться несколькими способами: с листа Excel, с помощью диалоговых окон, с помощью пользовательской формы.

Для ввода данных с листа или вывода на лист используется объект Worksheets и его методы Range или Cells.

МетодRange использует в качестве аргументов одну или две ссылки на ячейки, и возвращают объект Range. Ссылки на ячейки должны быть оформлены в стиле А1 (колонка-буква, строка-число). Ссылка на единичную ячейку, использованная в качестве аргумента, возвращает объект Range для единичной ячейки. Две ссылки на единичные ячейки возвращают объект Range для прямоугольной области, заключенной между этими двумя ячейками:

X = Worksheets(“Лист1”).Range(“B1”).Value Присваиваем переменной Х значение ячейки B1 листа Лист1.
Worksheets(“Лист1”).Range(“B1”).Value = Х Выводим в ячейку B1 листа Лист1 значение переменной Х
Worksheets(“Лист1”).Range(“C1,D6”).Value = 2 Выводим в ячейки C1 и D6 листа Лист1 число 2
Worksheets(“Лист1”).Range(“В7:С9”).Value = 3 Выводим в диапазон ячеек “В7:С9” листа Лист1 число 3

Public Sub Ввод_Вывод()

x = Worksheets("Лист1").Range("F1").Value

Worksheets(1).Range("F2").Value = x

x = Worksheets("Лист1").Range("g1")

Worksheets(1).Range("g2") = x

Worksheets("Лист1").Range("A1:B2").Value = 1

Worksheets(1).Range("c1, d6") = 5

End Sub

Метод Cells, получая в качестве аргументов два целых числа, возвращают объект, содержащий единичную ячейку. Аргументы определяют номера строки и столбца выбранной ячейки.

A=Worksheets(1).Cells(1,2).Value Переменной А присвоено значение из ячейки первой строки и второго столбца первого листа.
Worksheets(1).Cells(2,2).Value= Х В ячейку второй строки и второго столбца заносится значение переменной Х

Ячейка А2 как объект описывается Range ("A2") или cells (1,2).

В проектах VBA часто встречаются две разновидности диалоговых окон: окна сообщений и окна ввода. Они встроены в VBA, и если их возможностей достаточно, то можно обойтись без проектирования диалоговых окон. Окно сообщений (MsgBox) выводит простейшие сообщения для пользователя, а окно ввода (InpuBox) обеспечивает ввод информации.

Окно ввода

Окно вывода

Public Sub TestMsgBox1()

x = 2

n = MsgBox("Значение переменной Х=" & x & Chr(10) _

& "Продолжитьвычисления ?", vbYesNo, "Пример окна MsgBox")

If n = 6 Then

MsgBox "Нажата кнопка Да"

ElseIf n = 7 Then

MsgBox "Нажата кнопка Нет"

End If

End Sub

Запуск интегрированной среды VBA - student2.ru

Пользователь может нажать одну из кнопок – Да или Нет. Если будет нажата кнопка Да, переменной N будет присвоено значение 6 , если будет нажата кнопка Нет – 7. Проанализировав в дальнейшем это значение, можно выбрать одну из ветвей выполнения программы.

Часто процедура MsgBox используется в «минимальном» варианте - только для вывода сообщения, с одной кнопкой – OK. В этом случае аргументы не берутся в скобки.

Например:

MsgBox “Значение переменной Х=” & X

Запуск интегрированной среды VBA - student2.ru

Пример окна сообщений

ПРИМЕР:

1. Пример использования окон сообщений. В результате действия приведенной ниже процедуры Тестокон появится диалоговое окно пример окна ввода с полем ввода

Запуск интегрированной среды VBA - student2.ru

Следуя приглашению в этом диалоговом окне, введем в поле ввода имя, например Андрей. Нажмем кнопку ОК.

На экране отобразится диалоговое окно пример окна сообщения с текстом приветствия

Запуск интегрированной среды VBA - student2.ru

Если пользователь не введет имя в поле ввода

Наши рекомендации