excel-vbaНачало работы с excel-vba


замечания

Microsoft Excel включает в себя всеобъемлющий язык программирования макросов, который называется VBA. Этот язык программирования предоставляет вам как минимум три дополнительных ресурса:

  1. Автоматически управлять Excel из кода с помощью макросов. По большей части все, что пользователь может сделать, манипулируя Excel из пользовательского интерфейса, можно сделать, написав код в Excel VBA.
  2. Создайте новые пользовательские функции рабочего листа.
  3. Взаимодействуйте 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

Добавление новой ссылки на библиотеку объектов

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

В приведенном ниже примере показано, как добавить библиотеку 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
 

Объявление переменных

Чтобы явно объявить переменные в 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

Частные переменные могут использоваться только процедурами в одном модуле.

Источник и дополнительная информация:

MSDN-объявление переменных

Типовые символы (Visual Basic)

Начало работы с объектной моделью Excel

Этот пример намеревается быть нежным знакомством с объектной моделью Excel для начинающих .


  1. Откройте редактор Visual Basic (VBE)
  2. Нажмите «Вид» -> «Немедленное окно», чтобы открыть окно «Немедленное» (или Ctrl + G ):

введите описание изображения здесь

  1. Вы должны увидеть следующее Немедленное Окно внизу на VBE:

введите описание изображения здесь

Это окно позволяет вам непосредственно тестировать код VBA. Итак, давайте начнем, введите эту консоль:

?Worksheets. 
 

VBE имеет intellisense, а затем он должен открыть всплывающую подсказку, как на следующем рисунке:

введите описание изображения здесь

Выберите .Count в списке или непосредственно введите .Cout чтобы получить:

?Worksheets.Count
 
  1. Затем нажмите Enter. Выражение оценивается, и оно должно возвращаться 1. Это указывает количество Рабочего листа, которое в настоящее время присутствует в книге. Значок вопроса ( ? ) Является псевдонимом для Debug.Print.

Рабочие листы - это объект, а граф - метод . Excel имеет несколько объектов ( Workbook , Worksheet , Range , Chart ..), и каждый из них содержит специальные методы и свойства. Полный список объектов можно найти в справочной системе Excel VBA . Рабочий лист Объект представлен здесь .

Эта ссылка Excel VBA должна стать вашим основным источником информации об объектной модели Excel.

  1. Теперь давайте попробуем другое выражение, введите (без символа ? ):
Worksheets.Add().Name = "StackOveflow"
 
  1. Нажмите Ввод. Это должно создать новый рабочий лист под названием 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.

Привет, мир

  1. Откройте редактор Visual Basic (см. Раздел Открытие редактора Visual Basic )
  2. Нажмите «Вставить» -> «Модуль», чтобы добавить новый модуль:

введите описание изображения здесь

  1. Скопируйте и вставьте следующий код в новый модуль:
  Sub hello()
    MsgBox "Hello World !"
  End Sub
 

Чтобы получить :

введите описание изображения здесь

  1. Нажмите на зеленую стрелку «play» (или нажмите F5) на панели инструментов Visual Basic, чтобы запустить программу: введите описание изображения здесь

  2. Выберите новый созданный вспомогательный «привет» и нажмите « Run : введите описание изображения здесь

  3. Сделано, вы должны увидеть следующее окно:

введите описание изображения здесь

Открытие редактора Visual Basic (VBE)


Шаг 1. Откройте рабочую книгу.

введите описание изображения здесь


Шаг 2 Вариант A: нажмите Alt + F11

Это стандартный ярлык для открытия VBE.

Шаг 2 Вариант B: вкладка разработчика -> Просмотреть код

Во-первых, вкладка «Разработчик» должна быть добавлена ​​к ленте. Откройте «Файл» -> «Параметры» -> «Настроить ленту», затем установите флажок для разработчика.

введите описание изображения здесь

Затем перейдите на вкладку разработчика и нажмите «Просмотреть код» или «Visual Basic»,

введите описание изображения здесь

Шаг 2 Вариант C: вкладка «Вид»> «Макросы»> нажмите кнопку «Изменить», чтобы открыть существующий макрос

Все три из этих параметров откроют редактор Visual Basic (VBE):

введите описание изображения здесь