Microsoft Excel включает в себя всеобъемлющий язык программирования макросов, который называется VBA. Этот язык программирования предоставляет вам как минимум три дополнительных ресурса:
- Автоматически управлять Excel из кода с помощью макросов. По большей части все, что пользователь может сделать, манипулируя Excel из пользовательского интерфейса, можно сделать, написав код в Excel VBA.
- Создайте новые пользовательские функции рабочего листа.
- Взаимодействуйте Excel с другими приложениями, такими как Microsoft Word, PowerPoint, Internet Explorer, Блокнот и т. Д.
VBA означает Visual Basic для приложений. Это специальная версия почтенного языка программирования Visual Basic, на котором появились макросы Microsoft Excel с середины 1990-х годов.
ВАЖНЫЙ
Пожалуйста, убедитесь, что любые примеры или темы, созданные в теге excel-vba, специфичны и имеют отношение к использованию VBA с Microsoft Excel. Любые предлагаемые темы или примеры, которые являются общими для языка VBA, должны быть отклонены, чтобы предотвратить дублирование усилий.
Принцип работы, создание и конструирование Пользовательских Форм — UserForms (2)
- по темам: ✓ Создание и взаимодействие с объектами листа
✓ Класс WorksheetFunction и соответствующие методы
✓ Использование перечисления xlDirection для перемещения по диапазону
- примеры вне темы: ✗ Как создать цикл «для каждого»
✗ Класс MsgBox и способ отображения сообщения
✗ Использование WinAPI в VBA
Версии
VB
VB6 | 1998-10-01 |
VB7 | 2001-06-06 |
WIN32 | 1998-10-01 |
Win64 | 2001-06-06 |
MAC | 1998-10-01 |
превосходить
16 | 2016-01-01 |
15 | 2013-01-01 |
14 | 2010-01-01 |
12 | 2007-01-01 |
11 | 2003-01-01 |
10 | 2001-01-01 |
9 | 1999-01-01 |
8 | 1997-01-01 |
7 | 1995-01-01 |
5 | 1993-01-01 |
2 | 1987-01-01 |
Объявление переменных
Чтобы явно объявить переменные в VBA, используйте оператор Dim , за которым следуют имя и тип переменной. Если переменная используется без объявления или если тип не указан, ему будет присвоен тип Variant .
Используйте оператор Option Explicit в первой строке модуля, чтобы заставить все переменные быть объявлены перед использованием (см. ВСЕГДА Используйте «Option Explicit» ).
Всегда использовать Option Explicit настоятельно рекомендуется, потому что он помогает предотвратить ошибки опечатки / орфографии и гарантирует, что переменные / объекты останутся в их предполагаемом типе.
Excel VBA: возможности программирования в Excel
Option Explicit Sub Example() Dim a As Integer a = 2 Debug.Print a ‘Outputs: 2 Dim b As Long b = a + 2 Debug.Print b ‘Outputs: 4 Dim c As String c = «Hello, world!» Debug.Print c ‘Outputs: Hello, world! End Sub
Несколько переменных могут быть объявлены в одной строке с использованием запятых в качестве разделителей, но каждый тип должен быть объявлен отдельно или по умолчанию будет использоваться тип Variant .
Dim Str As String, IntOne, IntTwo As Integer, Lng As Long Debug.Print TypeName(Str) ‘Output: String Debug.Print TypeName(IntOne) ‘Output: Variant
Другими способами объявления переменных являются:
- Static like: Static CounterVariable as Integer
Когда вы используете инструкцию Static вместо оператора Dim, объявленная переменная сохраняет свое значение между вызовами.
- Public как: Public CounterVariable as Integer
Публичные переменные могут использоваться в любых процедурах в проекте. Если публичная переменная объявлена в стандартном модуле или модуле класса, ее также можно использовать в любых проектах, которые ссылаются на проект, в котором объявлена публичная переменная.
- Private как: Private CounterVariable as Integer
Частные переменные могут использоваться только процедурами в одном модуле.
Источник и дополнительная информация:
Открытие редактора Visual Basic (VBE)
Шаг 1. Откройте рабочую книгу.
Шаг 2 Вариант A: нажмите Alt + F11
Это стандартный ярлык для открытия VBE.
Шаг 2 Вариант B: вкладка разработчика -> Просмотреть код
Во-первых, вкладка «Разработчик» должна быть добавлена к ленте. Откройте «Файл» -> «Параметры» -> «Настроить ленту», затем установите флажок для разработчика.
Затем перейдите на вкладку разработчика и нажмите «Просмотреть код» или «Visual Basic»,
Шаг 2 Вариант C: вкладка «Вид»> «Макросы»> нажмите кнопку «Изменить», чтобы открыть существующий макрос
Все три из этих параметров откроют редактор Visual Basic (VBE):
Добавление новой ссылки на библиотеку объектов
Процедура описывает, как добавить ссылку на библиотеку объектов, а затем как объявить новые переменные со ссылкой на новые объекты класса библиотеки.
В приведенном ниже примере показано, как добавить библиотеку PowerPoint в существующий проект VB. Как видно, в настоящее время библиотека объектов PowerPoint недоступна.
Шаг 1 : выберите Инструменты меню -> Ссылки .
Шаг 2. Выберите ссылку, которую вы хотите добавить. В этом примере прокрутите страницу вниз, чтобы найти « Библиотека объектов Microsoft PowerPoint 14.0 », а затем нажмите « ОК ».
Примечание. PowerPoint 14.0 означает, что версия Office 2010 установлена на ПК.
Шаг 3 : в редакторе VB, как только вы нажмете Ctrl + Space вместе, вы получите опцию автозаполнения PowerPoint.
После выбора PowerPoint и нажатия . , появляется другое меню со всеми объектами, связанными с библиотекой объектов PowerPoint. В этом примере показано, как выбрать Application PowerPoint.
Шаг 4. Теперь пользователь может объявить больше переменных, используя библиотеку объектов PowerPoint.
Объявите переменную, ссылающуюся на объект Presentation библиотеки объектов PowerPoint.
Объявите другую переменную, ссылающуюся на объект Slide библиотеки объектов PowerPoint.
Теперь секция объявления переменных выглядит как на снимке экрана ниже, и пользователь может начать использовать эти переменные в своем коде.
Код версии этого учебника:
Option Explicit Sub Export_toPPT() Dim ppApp As PowerPoint.Application Dim ppPres As PowerPoint.Presentation Dim ppSlide As PowerPoint.Slide ‘ here write down everything you want to do with the PowerPoint Class and objects End Sub
Привет, мир
- Откройте редактор Visual Basic (см. Раздел Открытие редактора Visual Basic )
- Нажмите «Вставить» -> «Модуль», чтобы добавить новый модуль:
- Скопируйте и вставьте следующий код в новый модуль:
Sub hello() MsgBox «Hello World !» End Sub
- Нажмите на зеленую стрелку «play» (или нажмите F5) на панели инструментов Visual Basic, чтобы запустить программу:
- Выберите новый созданный вспомогательный «привет» и нажмите « Run :
- Сделано, вы должны увидеть следующее окно:
Начало работы с объектной моделью Excel
Этот пример намеревается быть нежным знакомством с объектной моделью Excel для начинающих .
- Откройте редактор Visual Basic (VBE)
- Нажмите «Вид» -> «Немедленное окно», чтобы открыть окно «Немедленное» (или Ctrl + G ):
- Вы должны увидеть следующее Немедленное Окно внизу на VBE:
Это окно позволяет вам непосредственно тестировать код VBA. Итак, давайте начнем, введите эту консоль:
?Worksheets.
VBE имеет intellisense, а затем он должен открыть всплывающую подсказку, как на следующем рисунке:
Выберите .Count в списке или непосредственно введите .Cout чтобы получить:
?Worksheets.Count
- Затем нажмите Enter. Выражение оценивается, и оно должно возвращаться 1. Это указывает количество Рабочего листа, которое в настоящее время присутствует в книге. Значок вопроса ( ? ) Является псевдонимом для Debug.Print.
Рабочие листы — это объект, а граф — метод . Excel имеет несколько объектов ( Workbook , Worksheet , Range , Chart ..), и каждый из них содержит специальные методы и свойства. Полный список объектов можно найти в справочной системе Excel VBA . Рабочий лист Объект представлен здесь .
Эта ссылка Excel VBA должна стать вашим основным источником информации об объектной модели Excel.
- Теперь давайте попробуем другое выражение, введите (без символа ? ):
Worksheets.Add().Name = «StackOveflow»
- Нажмите Ввод. Это должно создать новый рабочий лист под названием StackOverflow. :
Чтобы понять это выражение, вам нужно прочитать функцию «Добавить» в вышеупомянутой ссылке Excel. Вы найдете следующее:
Add: Creates a new worksheet, chart, or macro sheet. The new worksheet becomes the active sheet. Return Value: An Object value that represents the new worksheet, chart, or macro sheet.
Поэтому Worksheets.Add() создает новый рабочий лист и возвращает его.
Рабочий лист ( без s ) сам по себе является объектом, который можно найти в документации, а Name — одно из его свойств (см. Здесь ). Он определяется как:
Worksheet.Name Property: Returns or sets a String value that represents the object name.
Итак, исследуя определения различных объектов, мы можем понять этот код Worksheets.Add().Name = «StackOveflow» .
Add() создает и добавляет новый рабочий лист и возвращает ссылку на него, тогда мы устанавливаем его свойство Name в значение «StackOverflow»
Теперь давайте будем более формальными, Excel содержит несколько объектов. Эти объекты могут состоять из одного или нескольких коллекций объектов Excel того же класса. Это относится к WorkSheets который представляет собой коллекцию объекта Worksheet . Каждый объект имеет некоторые свойства и методы, с которыми может взаимодействовать программист.
Модель объекта Excel относится к иерархии объектов Excel
В верхней части всех объектов находится объект Application , он представляет собой экземпляр Excel. Программирование в VBA требует хорошего понимания этой иерархии, потому что нам всегда нужна ссылка на объект, чтобы иметь возможность вызвать метод или установить / получить свойство.
(Очень упрощенную) Модель объекта Excel может быть представлена как,
Application Workbooks Workbook Worksheets Worksheet Range
Более подробная версия для объекта Worksheet (как в Excel 2007) показана ниже,
Полную модель объектов Excel можно найти здесь .
Наконец, некоторые объекты могут иметь events (например: Workbook.WindowActivate ), которые также являются частью объектной модели Excel.
Источник: learntutorials.net
Введение в VBA: Макросы. (Часть 1 из 3)
Visual Basic for Application (VBA) — это язык программирования, который мы используем при написании макросов в Excel (и других программах Office). Написал макрос, запустил и сэкономил время на скучных повторяющихся задачах. Начать лучше с автоматизации небольших задач. Потом уже, набив руку, писать целые приложения и надстройки.
Когда в первый раз в жизни видишь код VBA, то становится дурно. Ничего не понятно. Но на самом деле любой VBA код не так сложно прочитать. Надо просто смотреть не на весь код сразу, а двигаться по строчкам и пытаться понять что делает каждая команда. Минимальных знаний английского хватит.
Программирование объектов в VBA — свойства и методы
VBA — это объектно-ориентированный язык программирования. Мы пишем код, который манипулирует объектами в Excel.
Объекты — это практически все, что вы можете себе представить в Excel: таблицы, диапазоны, диаграммы, сводные таблицы и т.д.
При написании кода VBA мы может читать/записывать свойства объектов или выполнять действия (методы) над объектами.
Посмотрите на примеры ниже и попробуйте догадаться что делает каждая из команд. Далее я расскажу что каждая из команд делает
Ещё одно понятие, с которым вы должны познакомиться — это объектная модель Excel. Это библиотека всех объектов в Excel. Как вы можете себе представить, это огромная библиотека!
Каждый объект имеет свои собственные свойства и методы, которые мы можем использовать. Есть три основных вещи, которые мы можем сделать со свойствами и методами.
# 1 — Чтение свойств
Знакомство с программированием в Excel
Написание кода Ваших процедур и редактирование макросов производится в редакторе Visual Basic, который доступен с вкладки «Разработчик». Данная вкладка по умолчанию скрыта. Для ее отображения необходимо выполнить следующие действия:
Для Excel 2007. Зайдите в параметры Excel, используя кнопку Office, и в «основных параметрах работы с Excel» установите галочку на пункте «Показывать вкладку Разработчик на ленте».
Для Excel 2010 и 2013. В параметрах Excel нужно выбрать пункт «Настроить ленту» и в категории основные вкладки установить галочку для вкладки «Разработчик».
Знакомство с редактором Visual Basic в Excel
Чтобы попасть в редактор кода, кликните на вкладке разработчика в области «Код» по кнопке «Visual Basic».
После этого на экране появится новое окно редактора VBA. Рассмотрим ниже некоторые его элементы, которые могут понадобиться в самом начале.
№1 на изображении. Кнопка сохранить. Сохраняет текущую книгу Excel. Необходимо быть внимательнее при работе с несколькими книгами, так как текущей считается та, которая выделена в окне проектов (№3 на изображении).
№2 на изображении. Кнопки запуска, остановки и прерывания выполнения кода. Во время запуска начинает выполняться код той процедуры, на которой размещен курсор. Данные кнопки дублируются вкладкой «Run» основного меню редактора.
№3 на изображении. Окно управления проектами VBA открытых книг (Project Explorer) и кнопка, отображающая это окно.
№4 на изображении. Кнопка, отображающая окно свойств объектов (Properties Window), выбранных в окне №3, и элементов пользовательских форм (работа с объектами, их свойствами и методами будет рассмотрена в отдельной статье этой категории).
№5 на изображении. Кнопка вызова окна объектов (Object Browser). В нем описаны все доступные для работы объекты, их свойства и методы.
Кнопки №3, №4 и №5 так же доступны на вкладке «View» главного меню редактора. Там же можно вызвать другие полезные для работы окна, которые не будут рассмотрены в этом материале.
Написание простой процедуры на Visual Basic for Application
Код любой процедуры (подпрограммы) располагается в модуле, поэтому необходимо его добавить, чтобы приступить к программированию. Выберите пункт «Module» на вкладке «Insert» основного меню редактора VBA. В основной области редактора (на изображении имеет серый фон) должно появиться новое окно кода – Имя_книги – имя_модуля (Code), а в окне управления проектами (№3) к дереву выбранного проекта добавится вновь созданный модуль.
Добавьте в модуль следующий код:
Sub Моя_процедура() MsgBox «Привет пользователь!» End Sub
Данная процедура выводит на экран диалоговое окно с сообщением «Привет пользователь!». Протестируйте ее работу, нажав кнопку Rub Sub (№2 на изображении) или вызвав как обычный макрос.
Теперь более подробно разберем приведенный код.
Любая процедура начинается со строки объявления, состоящей из оператора Sub (сокращение от Subprogram), после которого следует имя подпрограммы. За именем следует перечень аргументов, заключенный в скобки.
Для имени действуют некоторые ограничения: оно должно начинаться с буквы и не должно содержать пробелы и большинство спецсимволов.
В этом примере аргументы не используются, поэтому указываются пустые скобки.
Следующая строка выводит диалог на экран с помощью функции MsgBox. Сообщение, которое в нее передается должно содержать текст, поэтому оно заключается в двойные кавычки.
Последняя строка содержит оператор End с последующим ключевым словом Sub и сообщает о завершении процедуры.
Учимся пользоваться Object Browser
Выше была упомянута функция MsgBox, но ее возможности полностью не рассмотрены. Это хороший случай, чтобы научиться использовать браузер объектов (№5 на изображении окна редактора VBA).
Нажмите кнопку на панели или клавишу F2, чтобы отобразить Object Browser:
Выпадающий список №1 содержит перечень всех подключенных библиотек. Используйте его только в том случае, если точно знаете, к какой библиотеке относится изучаемый класс, функция и т.д. (подключить или отключить любую из доступных библиотек можно, выбрав пункт «References» на вкладке «Tools» главного меню редактора VBA).
Примечание: Библиотеки предоставляют стандартные и дополнительные возможности работы с объектами Excel (ячейки, листы, книги и т.д.), файловой системы, изображениями, базами данных и другими.
Поле №2 предназначено для поиска свойств, методов, классов подключенных библиотек.
Результаты поиска отображаются в поле №3 и представляют из себя таблицу с тремя столбцами: библиотека, класс и член класса.
Поле №4 содержит перечень всех классов, выбранных в поле №1 библиотек.
В области №5 содержится список всех членов класса, выбранного в поле №4.
Поле №6 содержит краткую справку о выделенном результате поиска, классе или члене класса.
Примечание: библиотеки, классы, функции и процедуры (методы), свойства и т.п. в Object Browser имеют различные обозначения, представленные набором пиктограмм. Краткая справка (поле №6) всегда указывает какой тип элемента выделен. Обращайте на это внимание, чтобы в дальнейшем лучше ориентироваться в работе с объектами.
Примечание: Понятие объекта не относится к теме данной статьи и будет рассмотрено в следующих материалах.
Теперь найдем функцию MsgBox с помощью браузера объектов. В поле поиска (№2) впишите ее название и кликните по кнопке с изображением бинокля. В поле результатов поиска выделите строку со значением MsgBox в столбце «Member». В поле №6 появилась краткая информация, сообщающая нам, что выбранный член является функцией, имеет перечень аргументов, возвращает результат типа VbMsgBoxResult, относиться в классу Interaction библиотеки VBA.
Для получения полной справки кликните по кнопке с изображением вопросительного знака. В зависимости от версии Excel, Вас перенаправить на файл справки или сайт с документацией от Microsoft.
Изучите самостоятельно возможности функции MsgBox.
Ссылка на процедуру VBA
По мере углубления в язык VBA Ваш код будет усложняться и иметь более гибкую логику. Вам часто придется сталкиваться с тем, что некоторые части программы будут дублировать код частично или полностью. Таких ситуаций нужно избегать, так как они усложняют понимание процедур и затрудняют их отладку.
Для лучшего понимая рассмотрим пример (в примере используется псевдокод):
Начало_Процедуры Любой код Первая строка дублирующего кода Любой код Последняя строка дублирующего кода Любой код Первая строка дублирующего кода Любой код Последняя строка дублирующего кода Любой код Конец_Процедуру
Выносите дублирующие участки кода в отдельные процедуры и указывайте ссылки на них из главной процедуры:
Начало_Главной_Процедуры Любой код Ссылка на Процедуру_дублирующегося_кода Любой код Ссылка на Процедуру_дублирующегося_кода Любой код Конец_Главной_Процедуру Начало_Процедуры_дублирующегося_кода Любой код Конец_Процедуры_дублирующегося_кода
Для указания ссылки на процедуру используется оператор Call, который состоит из необязательного ключевого слова Call и имени вызываемой подпрограммы:
Call Макрос1 ‘Следующая строка идентична предыдущей Макрос1
- Критерий Манна-Уитни
- Подключение MySQL в Excel
- Подключение Excel к SQL Server
Если материалы office-menu.ru Вам помогли, то поддержите, пожалуйста, проект, чтобы я мог развивать его дальше.
Источник: office-menu.ru