excel-vba учебник
Начало работы с excel-vba
Поиск…
замечания
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, должны быть отклонены, чтобы предотвратить дублирование усилий.
по темам:
✓ Создание и взаимодействие с объектами листа
✓ Класс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
настоятельно рекомендуется, потому что он помогает предотвратить ошибки опечатки / орфографии и гарантирует, что переменные / объекты останутся в их предполагаемом типе.
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 <--- !!!
Debug.Print TypeName(IntTwo) 'Output: Integer
Debug.Print TypeName(Lng) 'Output: Long
Переменные также могут быть объявлены с использованием суффиксов типа «Тип данных» ($% &! # @), Однако использование их все больше и больше обескураживается.
Dim this$ 'String
Dim this% 'Integer
Dim this& 'Long
Dim this! 'Single
Dim this# 'Double
Dim this@ 'Currency
Другими способами объявления переменных являются:
-
Static
like:Static CounterVariable as Integer
Когда вы используете инструкцию Static вместо оператора Dim, объявленная переменная сохраняет свое значение между вызовами.
-
Public
как:Public CounterVariable as Integer
Публичные переменные могут использоваться в любых процедурах в проекте. Если публичная переменная объявлена в стандартном модуле или модуле класса, ее также можно использовать в любых проектах, которые ссылаются на проект, в котором объявлена публичная переменная.
-
Private
как:Private CounterVariable as Integer
Частные переменные могут использоваться только процедурами в одном модуле.
Источник и дополнительная информация:
Типовые символы (Visual Basic)
Открытие редактора 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.