Vba справочник: Справочник по Visual Basic для приложений (VBA) для Excel
VBA справочник столбцов в таблице
Я пытаюсь установить таблицу в VBA, однако я хочу установить только диапазон, чтобы быть конкретными столбцами внутри таблицы. Я не могу показаться, чтобы выяснить, как это сделать. Все, что я ищу, похоже, возвращает ссылку на таблицу excel, и это не кажется правильным синтаксисом для VBA. Это то,что у меня есть, но я получаю ошибку времени выполнения ‘9’: индекс вне диапазона.
Set Contact = Worksheets("Tables").ListObjects("Table1[[Column2]:[Column8]]")
edit: я не думаю, что мой вопрос был ясен. Я пытаюсь ссылаться на определенный диапазон в таблице, потому что я использую vlookup, чтобы найти данные, которые я ищу. Я ссылаюсь на информацию во втором столбце и получаю информацию в столбце 8, чтобы установить переменную. Поэтому я пытаюсь установить listobject как таблицу внутри более крупной таблицы.
excel
vba
Поделиться
Источник
MsAgentM
06 февраля 2019 в 20:38
1 ответ
- Изменение меток столбцов доступа через VBA
Я уже некоторое время ищу решение этой проблемы и, похоже, не могу найти ничего подходящего. Можно ли изменить метки столбцов (заголовки) в таблице через VBA. Единственный способ, который я нахожу для этого, — это создать запрос на основе таблицы с параметрами в виде псевдонимов SQL. Однако он…
- Суммирование значений столбцов в таблице
У меня есть кнопки, которые могут добавлять строки, отменять последнюю добавленную строку и удалять все строки из таблицы. Наконец, у меня есть кнопка, которая должна добавить строку в конце таблицы, которая суммирует содержимое столбцов выше. Private Sub cmbSummarizeColumns_Click() Dim the_sheet…
2
Вы используете ListObjects("TableName")
для ссылки на всю таблицу. Затем ListColumns("ColumnHeading")
для ссылки на конкретные столбцы в таблице, где «ColumnHeading»-фактическое имя заголовка в таблице (или ListColumns(#)
, где #
-индексный номер столбца). Затем DataBodyRange
для ссылки на диапазон данных столбца.
Вместо VLookup
было бы лучше использовать Match
, чтобы найти номер строки, и Range.Cells
, чтобы получить результат.
Что-то вроде этого
Sub Demo()
Dim lo As ListObject
Dim SearchRange As Range
Dim LookupRange As Range
Dim SearchTerm As Variant
Dim LookupItem As Variant
Dim idx As Variant
Set lo = Worksheets("Tables").ListObjects("Table1")
Set SearchRange = lo.ListColumns("Column2").DataBodyRange
Set LookupRange = lo.ListColumns("Column8").DataBodyRange
SearchTerm = "YourSearchTerm"
idx = Application.Match(SearchTerm, SearchRange, 0)
If Not IsError(idx) Then
LookupItem = LookupRange.Cells(idx, 1)
' use the result as you wish
Debug.Print LookupItem
Else
' SearchTerm not found. What now?
End If
'For completeness, heres how to reference a range of columns
Dim VLookupRange As Range
Set VLookupRange = lo. Parent.Range(lo.ListColumns("Column2").DataBodyRange, lo.ListColumns("Column8").DataBodyRange)
Debug.Print VLookupRange.Address
End Sub
Поделиться
chris neilsen
06 февраля 2019 в 21:50
Похожие вопросы:
Максимальное количество столбцов в таблице
Проблема 1: каково максимальное количество столбцов, которые мы можем иметь в таблице Проблема 2: каково максимальное количество столбцов, которые мы должны иметь в таблице
Количество столбцов в таблице MySQL
Возможный Дубликат : Найдите количество столбцов в таблице Я хотел бы знать, что такое запрос, который позволяет подсчитать количество столбцов в таблице в MySQL. Что-то вроде : SELECT…
VBA textBox столбцов
Как я могу установить номер столбцов для textbox в VBA для Excel? (excel находится -> формы -> формат текстовое поле -> столбцы). Я пытался искать по всему интернету и офисной справке, но я могу…
Изменение меток столбцов доступа через VBA
Я уже некоторое время ищу решение этой проблемы и, похоже, не могу найти ничего подходящего. Можно ли изменить метки столбцов (заголовки) в таблице через VBA. Единственный способ, который я нахожу…
Суммирование значений столбцов в таблице
У меня есть кнопки, которые могут добавлять строки, отменять последнюю добавленную строку и удалять все строки из таблицы. Наконец, у меня есть кнопка, которая должна добавить строку в конце…
получить несколько имен столбцов (заголовков) в таблице, связанных с определенным значением в ячейке
мне нужно получить несколько имен столбцов (заголовков) в таблице, связанных с определенным значением в ячейке как я уже объяснял, мне нужно получить названия заголовков, соответствующие значению n…
Код для выбора нескольких столбцов в таблице Excel
Я новичок в Excel VBA. Мне нужна модификация в моем коде, чтобы я мог двигаться дальше. Я хочу выбрать несколько столбцов таблицы в таблице excel. Вот мой код: Dim ws As Worksheet Dim tbl As…
VBA для вычисления конкретного выбора в таблице (excel)
Я пытаюсь создать VBA, который установит вычисление определенного столбца/диапазона столбцов вручную в таблице, которая настроена на автоматическое вычисление. Поскольку приборная панель уже…
VBA Выберите конкретную ячейку в таблице PowerPoint
Как выбрать конкретную ячейку в таблице PowerPoint ? Мне нужно вставить в таблицу PowerPoint, включая мое форматирование Excel, в определенную ячейку. Код находится в Excel! В частности, именно так…
Скрытие пустых столбцов в таблице в excel с помощью VBA
У меня есть лист excel со столом, и он довольно большой, так что у меня также есть слайсер, чтобы разбить его на видимые куски. Моя проблема заключается в том, что при выборе определенной единицы. ..
Функции VBA Excel для решения ряда задач механики жидкостей
1. ТАБЛИЦА ПЛОТНОСТЕЙ ЖИДКОСТЕЙ
Прежде всего, имеет смысл по таблице плотностей жидкостей [1] создать средствами VBA [2] пользовательскую функцию, назовем ее ПЛОТНОСТИ, которая будет возвращать величину плотности указанной жидкости.
Пользовательские функции Excel создаются в редакторе VB (Visual Basic), обозначаемом VBE. Командами РАЗРАБОТЧИК → VB → Insert → Module открывается модуль редактора, в который вводится (набирается с клавиатуры или копируется и вставляется) программный код пользовательской функции. Ограничиваясь небольшим числом жидкостей, код будет иметь вид:
Function ПЛОТНОСТИ(Жидкость As String)
Select Case Жидкость
Case «Вода морская»
ПЛОТНОСТИ = 1030
Case «Вода чистая»
ПЛОТНОСТИ = 1000
Case «Машинное масло»
ПЛОТНОСТИ = 900
Case «Керосин», «Спирт», «Нефть»
ПЛОТНОСТИ = 800
Case «Бензин»
ПЛОТНОСТИ = 710
End Select
End Function
Sub InstallFunc()
Application. MacroOptions Macro:= «ПЛОТНОСТИ», _ Description:=»Возвращает » & _
«величину плотности жидкости (кг/м3)»
End Sub
Заключительная часть кода, начинающаяся Sub InstallFunc(), – код описания функции, то, что в двойных кавычках после Description, будет появляться в диалоговом окне функции, только надо в эту часть кода установить курсор ввода и щелкнуть по кнопке редактора VB. Пробел и нижнее подчеркивание – оператор переноса строки кода. После этого редактор VB закрывается.
Задача 1.1. Применяя функцию ПЛОТНОСТИ, определите плотность бензина.
Технология решения. 1. Командами Вставка функции (кнопка fx) → Определенные пользователем → ПЛОТНОСТИ открывается диалоговое окно и вводится наименование жидкости, что ниже возвращает ее плотность (рис. 1).
Рис. 1. Применение функции ПЛОТНОСТИ
2. ГИДРОСТАТИЧЕСКОЕ ДАВЛЕНИЕ
Давление в жидкости плотности ρ, когда высота столба жидкости h, находится [1] по формуле:
. (1)
Создается функция пользователя ФДЖ (аббревиатура от ФОРМУЛА ДАВЛЕНИЯ ЖИДКОСТИ), возвращающая значение указанной переменной, входящей в формулу (1), когда заданы значения двух других переменных. Код функции ФДЖ и ее описания:
Function ФДЖ(Давлен_Па, Плот_кг_м3, Высота_м, _
P_Ro_H As String)
Select Case P_Ro_H
Case “P”
ФДЖ = 9.8 * Плот_кг_м3 * Высота_м
Case “Ro”
ФДЖ = Давлен_Па/ Высота_м /9.8
Case “H”
ФДЖ = Давлен_Па/ Плот_кг_м3/ 9.8
End Select
End Function
Sub InstallFunc1()
Application.MacroOptions Macro:=»ФДЖ», Description:= _ «Возвращает при P величину давления, » & _
«при Ro – плотности, при H — высоты»
End Sub
Задача 2.1. Определите давление бензина на дно цистерны, если высота столба бензина 5 м.
Технология решения. Вызывается функция ФДЖ, вводятся значения плотности, высоты и “P”, тогда ниже появляется результат (рис. 2).
Рис. 2. Применение функции ФДЖ в задаче 2.1
Задача 2.2. Определите плотность жидкости, если на глубине 3 м ее давление составляет 30282 Па.
Технология решения. Вызывается функция ФДЖ, вводятся данные задачи и “Ro” (рис. 3).
Рис. 3. Применение функции ФДЖ в задаче 2.2
Задача 2.3. Поршневой насос может произвести давление 4,9·105 Па. Определите на какую высоту можно поднять воду этим насосом.
Технология решения. Вызывается функция ФДЖ, вводятся данные задачи и “H” (рис. 4).
Рис. 4. Применение функции ФДЖ в задаче 2.3
3. ВЫТАЛКИВАЮЩАЯ СИЛА
Выталкивающая (Архимедова) сила, действующая на тело погруженное в жидкость, находится [1] по формуле:
. (2)
Создается функция пользователя ФВС (аббревиатура от ФОРМУЛА ВЫТАЛКИВАЮЩЕЙ СИЛЫ), возвращающая значение указанной переменной, входящей в формулу (2), когда заданы значения других переменных. Код функции ФВС и ее описания:
Function ФВС(Сила_Н, Плот_кг_м3, Объем_м3, _
F_Ro_V As String)
Select Case F_Ro_V
Case “F”
ФВС = 9.8 * Плот_кг_м3 * Объем_м3
Case “Ro”
ФВС = Сила_Н /9.8 / Объем_м3
Case “V”
ФВС = Сила_Н /9.8 / Плот_кг_м3
End Select
End Function
Sub InstallFunc2()
Application.MacroOptions Macro:=»ФВС», Description:= _
«Находит при F величину выталкивающей силы, » & _
«при Ro – плотности, при V — объема»
End Sub
Задача 3.1. Найдите выталкивающую силу, действующую в морской воде на тело, объем которого 0,25 м3.
Технология решения. Вызывается функция ФВС, вводятся данные задачи и “F”, что ниже возвращает результат (рис. 5).
Рис. 5. Применение функции ФВС в задаче 3.1
Задача 3.2. Определите объем тела, погруженного в морскую воду, если величина выталкивающей силы 100 Н.
Технология решения. Вызывается функция ФВС, вводятся данные задачи и “V” (рис. 6).
Рис. 6. Применение функции ФВС в задаче 3.2
Задача 3.3. Определите плотность жидкости, если на погруженное в нее тело объемом 0,75 м3 действует выталкивающая сила 5880 Н.
Технология решения. Вызывается функция ФВС, вводятся данные задачи и “Ro” (рис. 7).
Рис. 7. Применение функции ФВС в задаче 3.3
НОУ ИНТУИТ | Лекция | VBA-редактор
Аннотация: Немалая часть работы VBA-программиста проводится в так называемом визуальном режиме.
Здесь не требуется знания особенностей написания команд на VBA или управляющих структур языка.
Вы работаете с командами меню, создаёте формы, настраиваете элементы управления, создаете обработчики событий.
Эта лекция посвящена VBA-редактору и особенностям работы с ним.
3.1. Особенности главного меню VBA-редактора
intuit.ru/2010/edi»>Окно редактора Visual Basic выглядит одинаково во всех приложениях Microsoft Office. Давайте рассмотрим главное меню этого окна, описав назначение наиболее часто используемых пунктов.- File (Файл) — служит для работы с файлами.
- File • Save — сохраняет файл.
- File • Import File — позволяет импортировать внешний файл в редактор. Например, таким образом можно добавить в свой проект модуль (то есть — программный код) или форму.
- File • Export File — экспортирует данные из редактора во внешний файл. Например, этой командой можно сохранить редактируемую форму и передать ее другому разработчику.
- File • Close and Return To Microsoft Word — закрывает VBA-редактор и возвращается в Microsoft Word (аналогичная команда есть и для MS Excel). Вы можете просто переключаться между редактором и основным приложением в Панели задач Windows, не закрывая редактор.
- Edit (Правка) — содержит команды для правки. Помимо стандартных команд отмены и возврата последнего действия ( Undo, Redo ), вырезания, копирования, вставки ( Cut, Copy, Insert ), поиска ( Find ), это меню содержит несколько особенных команд. В частности, это List Properties/Methods (Список Свойств/Методов) и другие.
- View (Вид) — cодержит команды для отображения различных окон редактора. Названия команд соответствуют названиям окон.
- Insert (Вставка) — служит для вставки в проект форм ( Insert • User Form ), модулей ( Insert • Module ), процедур ( Insert • Procedure ), файлов ( Insert • File ) и модулей класса ( Insert • Class Module ). Чаще всего вам придется вставлять в проект формы. Эти команды продублированы на панели инструментов редактора.
- Format (Форматирование) — служит для управления расположением элементов управления на формах.
- Debug (Отладка) — содержит команды, позволяющие отлаживать программы.
- Run (Запуск) — содержит команды для управления выполнением программ. В частности, команда Run • Sub/User Form (Запуск • Процедура/Форма) запускает на выполнение активную процедуру или форму (рядом с этой командой стоит характерный зеленый треугольник). Команда Run • Break (Запуск • Приостановить) — приостанавливает выполнение программы, команда Run • Reset (Запуск • Перезапуск) – останавливает выполнение программы. Эти команды продублированы на панели инструментов редактора в виде кнопок с соответствующими пиктограммами.
- Tools (Инструменты) — содержит средства для настройки свойств редактора, подключения дополнительных библиотек объектов.
- Add-Ins (Дополнения) — позволяет управлять дополнениями. По умолчанию это меню содержит лишь одну команду, запускающую менеджер дополнений.
- Window (Окно) — стандартные команды для работы с окнами.
- Help (Помощь) — помощь по VBA.
В дальшейнем мы подробно рассмотрим многие из команд главного меню. А сейчас давайте поговорим об окне Project — вам постоянно придется пользоваться им.
3.2. Подробности об окне Project
Окно Project служит для навигации по проекту (рис. 3.1.).
Рис.
3. 1.
Окно Project
Каждый открытый документ представляет собой отдельный проект. На рис. 3.1. вы можете видеть окно Project для только что созданного документа MS Word. В проект добавлена форма.
Проект имеет иерархическую структуру. Так, в разделе Microsoft Word Objects (Объекты Microsoft Word) мы можем видеть объект ThisDocument (Этот документ), то есть документ, который мы создали. В разделе Forms (Формы) мы можем видеть объект UserForm1 — только что вставленную в проект форму.
Чтобы отобразить объект, достаточно сделать по нему двойной щелчок или нажать на кнопку View Object (вторая слева в верхней части окна Project ). Чтобы просмотреть код объекта надо нажать на кнопку View Code (крайняя левая кнопка).
Щелкнув правой кнопкой мыши по названию проекта, можно увидеть его контекстное меню. Это меню содержит наиболее часто используемые команды для работы с проектами. В частности, особый интерес представляет команда Project Properties (Свойства проекта).
В окне Project Properties обратите внимание на вкладку Protection (Защита). Она позволяет защитить проект от просмотра и закрыть его паролем.
Для защиты проекта от просмотра установите галочку в поле Lock project for viewing (Закрыть проект от просмотра), для закрытия проекта паролем, введите в поля Password (Пароль) и Confirm password (Подтвердить пароль) пароль.
Существует специальное ПО, которое позволяет восстанавливать забытые пароли к VBA-проектам. Как вы понимаете, оно может помочь получить доступ в проект не только законным владельцам, но и злоумышленникам. Поэтому если вы, например, передаете кому-то ценный VBA-проект по слабо защищенным каналам связи — лучше зашифруйте весь файл с помощью какой-нибудь программы шифрования.
Еще одна полезная возможность, связанная с управлением проектами – подписывание проектов.
Прежде чем подписать проект, нужно создать цифровой сертификат для проектов VBA. Чтобы создать его, пройдите по пути Пуск • Все программы • Microsoft Office • Microsoft Office Tools • Digital Certificate for VBA Projects. Введите в появившемся окне имя для сертификата.
Чтобы теперь подписать проект, выделите его в окне Project и воспользуйтесь командой Tools • Digital Signature. В появившемся окне нажмите на кнопку Выбрать — появится окно для выбора сертификата. Выберите из этого окна интересующий вас сертификат. В нашем случае здесь присутствует лишь один, заранее созданный, сертификат. Вот как выглядит окно цифровой подписи после завершения выбора (рис. 3.2.)
Рис.
3.2.
Цифровая подпись проектов
Это позволит, с одной стороны, не отвлекаться на постоянные запросы системы безопасности, а с другой — не понижать безопасность системы, разрешая выполнение всех макросов.
Теперь займемся работой с формами и элементами управления
3.3. Формы и элементы управления
03-01-Формы и элементы управления.docm — пример п. 3.3. — 3.6
Создайте новый документ Microsoft Word и откройте редактор VBA. Вставьте в проект новую форму командой Insert • User Form (Вставка • Форма). Вот что должно получиться (рис. 3.3.).
Как видите, форма — это пустая заготовка будущего диалогового окна вашего приложения.
По краям новой формы вы можете видеть маркеры выделения. С их помощью можно настраивать ее размеры.
Обратите внимание на окно Properties (Свойства). Как вы уже знаете, оно содержит свойства объектов. Для выбора объекта, свойства которого будут отображены в этом окне, нужно либо выделить объект, либо указать его в списке, который находится в верхней части окна Properties.
Окно Toolbox (Элементы управления) содержит элементы управления, которые можно добавлять на форму. Элементы управления — это все то, что служит для управления работой программ. Например: кнопки, поля ввода, полосы прокрутки и так далее.
Для того, чтобы добавить элемент управления на форму, нажмите в окне Toolbox кнопку с изображением этого элемента и выделите мышью ту область на форме, которую он должен занять
intuit.ru/2010/edi»>Нажмем на кнопку Toolbox’а с изображением кнопки и добавим новую кнопку на форму. Вот, что у нас получилось (рис. 3.4.).Вокруг кнопки вы можете видеть маркеры выделения, которые служат для изменения ее размера. «Схватив» элемент управления мышью, вы можете перемещать его по форме.
неплохое: 2009
инструкцию по газовому оборудованию скачать жени отрдной Alleycode HTML Editor 2 16 2 скачать на русском скачать драйверы для NVIDIA GeForce 7050 / NVIDIA nForce 610i конг-фу панда скачать счет скачать скачать «Кайфую» скачать бесплатный клип Madcon beggin скачать бесплатно sp1 Музыку скачать 21 грам саундтрек скачать скачать Adobe illustrator Rus скачать игры на nokia 6300 скачать прошивку на nokia 6300 скачать бесплатно the bat скачать бесплатно mp3 коммунизм скачать одежду к симс 2 скачать песню баста,гуф,центр -город дорог скачать компьютерные логические игры шарики скачать бесплатно игру симсоны скачать sav Devil May Cry 3 SE скачать программу которая открывает файл типа SVF Вдох-выдох скачать скачать fddshow скачать бесплатно simple plain — your love is just a lie скачать программу для конвектарции файлов скачать бесплатно из flv в 3gp империя добра скачать звери — пока, пока скачать бесплатно скачать моя мамулечка скачать Adobe Photoshop бесплатно скачать Fruity Loops Studio Full (RUS) скачать Discord Action Bars 3 15 ImTOO 3GP Video Converter v3 1 скачать скачать моды для игры Gta San Andreas русская рыбала скачать бесплатно игра Чудо-ферма скачать программы на комуникатор скачать проги для взлома сети (скачать бесплатно) скачать фильмы с помощью torrent скачать S&M скачать Macross Frontier скачать клип Безатветно Меладзе и Приходько скачать бесплатно переводчика скачать игры для Sega virtual dj скачать скачать игры типа FarCry скачать игры косынка сапер паук скачать Nero 7 бесплатно скачать opera для benq-siemens скачать бесплатно одноклассники на телефон скачать песню break the ice скачать игровые автоматы бесплатно скачать DJ Rooster and Sammy Peralta — Jupiter (Funkatronik mix) прклятые короли скачать Настя Задарожная «подруга»(скачать без регистрации) скачать Ultad VideoStudio 11 скачать wc3 ключи на Kaspersky internet security 7 скачать бесплатно лолита скачать куб скачать мастер бургер 2 скачать ключ Филипп Киркоров, Ты не поверишь, скачать скачать Acronis Home На сайте вы можете скачать скачать donna summer once upon a time в формате wav скачать книги букам нет полный текст Конституции РФ скачать бесплатно трофим скачать говорят на земле скачать клипы mxpx бесплатно скачать hard rock скачать патч для Call of Duty 2 Kaith Sweat — Nobody скачать Смысловые галюцинации скачать скачать КВН казахи скачать CHUBBY CHECKER — LET’S TWIST AGAIN tascam gigastudio 4 скачать Никита — Улетели Навсегда скачать бесплатно скачать counter-strike с ботами частное видео пэрис хилтон скачать бесплатно скачать программное обеспичение для нокиа N70 скачать бесплатно The beatles — Michael скачать программу для n73 blac list скачать ashalt 3 скачать игру UEFA EURO 2008 yf psp скачать спидхак для 2/4/3 скачать патч на two worlds скачать книгу трансферинг реальности adobe photoshop скачать скачать русификатор NOD32 3 0 650 скачать бесплатно песню слава»классный» скачать и установить бесплатно анти вирус на русском языке скачать игры для Sony ericsson w200i монстр шарлиз терон скачать бесплатно Домашние финансы скачать фильм (скачать) Deep In The Heart u2 скачать скачать java приложения lkz ыфьыгтп у250 скачать бесплатно mp3 Лесник los lobos скачать бесплатно лимонов скачать книги бесплатно скачать драйвер DSS25 скачать иудшумуюьз3 скачать mp3 где ты,я иду за тобою? скачать Naruto Shippuuden 067 Татьяна Маркова песни скачать бесплатно скачать дополнения к warhammer 40 000 dark crusade скачать игры для нинтендо скачать wh aim cs 1 6 скачать бесплатно песню Daffy «Merci» Peppermint Twist-Sweet скачать скачать photo watermark professional скачать музыку с сайта zaicev net fallaut скачать скачать рисунки татуировок скачать русский язык для dreamweaver скачать пробные приложения антивируса касперского скачать вера брежнева я не играю скачать игру Star Kraft бесплатно скачать фулаут 2 далеко далеко журавли улетели скачать Альбомы Сборники — скачать mp3 бесплатно, без регистрации! скачать
Office Visual Basic для приложений (VBA), ссылка
- 000Z» data-article-date-source=»ms.date»> 11.06.2019
- 2 минуты на чтение
В этой статье
Office Visual Basic для приложений (VBA) — это язык программирования, управляемый событиями, который позволяет расширять приложения Office.
Программирование VBA в офисе
Этот справочник предназначен для опытных пользователей Office, которые хотят узнать о VBA и получить представление о том, как программирование может помочь им в настройке Office.
Пакет приложений Office имеет полный набор функций. Существует множество различных способов создания, форматирования и управления документами, электронной почтой, базами данных, формами, электронными таблицами и презентациями.
Великая сила программирования на VBA в Office заключается в том, что почти каждую операцию, которую вы можете выполнить с помощью мыши, клавиатуры или диалогового окна, также можно автоматизировать с помощью VBA. Кроме того, если это можно сделать один раз с помощью VBA, то так же легко и сто раз. Фактически, автоматизация повторяющихся задач — одно из наиболее распространенных применений VBA в Office.
Помимо возможностей написания сценариев VBA для ускорения повседневных задач, вы можете использовать VBA для добавления новых функций в приложения Office или для подсказки и взаимодействия с пользователем ваших документов способами, которые соответствуют потребностям вашего бизнеса. Например, вы можете написать код VBA, который отображает всплывающее сообщение, напоминающее пользователям о необходимости сохранить документ на конкретный сетевой диск при первой попытке сохранить его.
См. Также
Поддержка и отзывы
Есть вопросы или отзывы об Office VBA или этой документации? См. Раздел Поддержка и отзывы Office VBA, чтобы узнать, как получить поддержку и оставить отзыв.
Начало работы с VBA в Office
- 000Z» data-article-date-source=»ms.date»> 14.08.2019
- 25 минут на чтение
В этой статье
Вы сталкиваетесь с повторяющейся очисткой пятидесяти таблиц в Word? Вы хотите, чтобы конкретный документ предлагал пользователю вводить данные при его открытии? Вам сложно понять, как эффективно перенести контакты из Microsoft Outlook в электронную таблицу Microsoft Excel?
Вы можете выполнять эти задачи и многое другое, используя Visual Basic для приложений (VBA) для Office — простой, но мощный язык программирования, который можно использовать для расширения приложений Office.
Эта статья предназначена для опытных пользователей Office, которые хотят узнать о VBA и понять, как программирование может помочь им в настройке Office.
Пакет приложений Office обладает богатым набором функций. Существует множество различных способов создания, форматирования и управления документами, электронной почтой, базами данных, формами, электронными таблицами и презентациями. Великая сила программирования на VBA в Office заключается в том, что почти все операции, которые вы можете выполнить с помощью мыши, клавиатуры или диалогового окна, также можно выполнить с помощью VBA.Кроме того, если это можно сделать один раз с помощью VBA, то так же легко и сто раз. (Фактически, автоматизация повторяющихся задач — одно из наиболее распространенных применений VBA в Office.)
Помимо возможностей написания сценариев VBA для ускорения повседневных задач, вы можете использовать VBA для добавления новых функций в приложения Office или для подсказки и взаимодействия с пользователем ваших документов способами, которые соответствуют потребностям вашего бизнеса. Например, вы можете написать код VBA, который отображает всплывающее сообщение, напоминающее пользователям о необходимости сохранить документ на конкретный сетевой диск при первой попытке сохранить его.
В этой статье исследуются некоторые основные причины, по которым необходимо использовать возможности программирования на VBA. Он исследует язык VBA и готовые инструменты, которые вы можете использовать для работы со своими решениями. Наконец, он включает в себя несколько советов и способов избежать некоторых типичных ошибок и ошибок при программировании.
Примечание
Заинтересованы в разработке решений, расширяющих возможности Office на нескольких платформах? Ознакомьтесь с новой моделью надстроек Office. Надстройки Office занимают меньше места по сравнению с надстройками и решениями VSTO, и вы можете создавать их, используя практически любую технологию веб-программирования, например HTML5, JavaScript, CSS3 и XML.
Когда использовать VBA и почему
Есть несколько основных причин рассмотреть возможность программирования на VBA в Office.
Автоматизация и повторение
VBA эффективен и действенен, когда дело доходит до повторяющихся решений проблем форматирования или исправления. Например, вы когда-нибудь меняли стиль абзаца вверху каждой страницы в Word? Вам когда-нибудь приходилось переформатировать несколько таблиц, которые были вставлены из Excel в документ Word или электронное письмо Outlook? Приходилось ли вам когда-нибудь вносить одно и то же изменение в несколько контактов Outlook?
Если у вас есть изменение, которое необходимо внести более десяти или двадцати раз, возможно, стоит автоматизировать его с помощью VBA. Если это изменение, которое вам нужно делать сотни раз, его, безусловно, стоит рассмотреть. Практически любое изменение форматирования или редактирования, которое вы можете сделать вручную, можно выполнить в VBA.
Расширения взаимодействия с пользователем
Бывают случаи, когда вы хотите побудить или заставить пользователей взаимодействовать с приложением или документом Office определенным образом, который не является частью стандартного приложения. Например, вы можете захотеть побудить пользователей предпринять определенные действия при открытии, сохранении или печати документа.
Взаимодействие между офисными приложениями
Вам нужно скопировать все ваши контакты из Outlook в Word, а затем отформатировать их определенным образом? Или вам нужно переместить данные из Excel в набор слайдов PowerPoint? Иногда простое копирование и вставка не делает того, что вы хотите, или оно выполняется слишком медленно. Вы можете использовать программирование на VBA для одновременного взаимодействия с деталями двух или более приложений Office, а затем изменять содержимое в одном приложении на основе содержимого в другом.
Как поступить иначе
Программирование на VBA — мощное решение, но не всегда оптимальный подход. Иногда имеет смысл использовать другие способы для достижения своих целей.
Важнейший вопрос, который нужно задать, — есть ли более простой способ. Прежде чем начать проект VBA, рассмотрите встроенные инструменты и стандартные функции. Например, если у вас есть трудоемкая задача редактирования или макета, подумайте об использовании стилей или клавиш-ускорителей для решения проблемы. Можете ли вы выполнить задачу один раз, а затем использовать CTRL + Y (Повторить), чтобы повторить ее? Можете ли вы создать новый документ с правильным форматом или шаблоном, а затем скопировать содержимое в этот новый документ?
Офисные приложения — мощные; решение, которое вам нужно, может уже быть там.Прежде чем приступить к программированию, найдите время, чтобы узнать больше об Office.
Перед тем, как начать проект VBA, убедитесь, что у вас есть время поработать с VBA. Программирование требует сосредоточенности и может быть непредсказуемым. Тем более, что новичок, никогда не обращайтесь к программированию, если у вас нет времени тщательно поработать. Попытка написать «быстрый сценарий» для решения проблемы, когда приближается крайний срок, может привести к очень стрессовой ситуации. Если вы спешите, вы можете использовать обычные методы, даже если они однообразны и однообразны.
Программирование на VBA 101
Использование кода для работы приложений
Вы можете подумать, что написание кода загадочно или сложно, но основные принципы основаны на повседневных рассуждениях и вполне доступны. Приложения Microsoft Office созданы таким образом, что они предоставляют объекты, называемые объектами, которые могут получать инструкции, почти так же, как в телефоне созданы кнопки, которые вы используете для взаимодействия с телефоном. Когда вы нажимаете кнопку, телефон распознает инструкцию и включает соответствующий номер в последовательность, которую вы набираете. В программировании вы взаимодействуете с приложением, отправляя инструкции различным объектам в приложении. Эти объекты обширны, но у них есть свои пределы. Они могут делать только то, для чего они предназначены, и они будут делать только то, что вы им прикажете делать.
Например, представьте пользователя, который открывает документ в Word, вносит несколько изменений, сохраняет документ, а затем закрывает его. В мире программирования VBA Word предоставляет объект Document. Используя код VBA, вы можете указать объекту Document выполнять такие действия, как «Открыть», «Сохранить» или «Закрыть».
В следующем разделе обсуждается организация и описание объектов.
Объектная модель
Разработчики организуют программные объекты в иерархию, и эта иерархия называется объектной моделью приложения. Word, например, имеет объект Application верхнего уровня, который содержит объект Document. Объект Document содержит объекты Paragraph и так далее. Объектные модели примерно отражают то, что вы видите в пользовательском интерфейсе. Они представляют собой концептуальную карту приложения и его возможностей.
Определение объекта называется классом, поэтому вы можете увидеть, что эти два термина используются как взаимозаменяемые. Технически класс — это описание или шаблон, который используется для создания или создания экземпляра объекта.
Когда объект существует, вы можете управлять им, задавая его свойства и вызывая его методы. Если вы думаете об объекте как о существительном, свойства — это прилагательные, которые описывают существительное, а методы — это глаголы, которые оживляют существительное. Изменение свойства меняет качество внешнего вида или поведения объекта.Вызов одного из методов объекта заставляет объект выполнить какое-то действие.
Код VBA в этой статье работает с открытым приложением Office, в котором многие объекты, которыми манипулирует код, уже запущены и работают; например, само приложение, рабочий лист в Excel, документ в Word, презентация в PowerPoint, объекты проводника и папки в Outlook. Узнав базовый макет объектной модели и некоторые ключевые свойства приложения, которые предоставляют доступ к его текущему состоянию, вы можете начать расширять и управлять этим приложением Office с помощью VBA в Office.
Методы
В Word, например, вы можете изменять свойства и вызывать методы текущего документа Word с помощью свойства ActiveDocument объекта Application . Это свойство ActiveDocument возвращает ссылку на объект Document , который в настоящее время активен в приложении Word. «Возвращает ссылку на» означает «дает вам доступ к».
Следующий код делает именно то, что говорит; то есть сохраняет активный документ в приложении.
Application.ActiveDocument.Save
Прочтите код слева направо: «В этом приложении с документом, на который ссылается ActiveDocument, вызовите метод Save ». Имейте в виду, что Save — простейшая форма метода; это не требует от вас каких-либо подробных инструкций. Вы передаете объекту Document команду Save , и это не требует от вас дополнительных действий.
Если для метода требуется дополнительная информация, эти сведения называются параметрами.Следующий код запускает метод SaveAs , для которого требуется новое имя файла.
Application.ActiveDocument.SaveAs («Имя нового документа.docx»)
Значения, перечисленные в скобках после имени метода, являются параметрами. Здесь новое имя файла является параметром для метода SaveAs .
Недвижимость
Вы используете тот же синтаксис, чтобы установить свойство, которое вы используете для чтения свойства. Следующий код выполняет метод выбора ячейки A1 в Excel, а затем устанавливает свойство для помещения чего-либо в эту ячейку.
Application.ActiveSheet.Range ("A1"). Выберите
Application.Selection.Value = "Привет, мир"
Первая задача в программировании на VBA — получить представление об объектной модели каждого приложения Office и прочитать синтаксис объекта, метода и свойства. Объектные модели аналогичны во всех приложениях Office, но каждая зависит от типа документов и объектов, с которыми она работает.
В первой строке фрагмента кода находится объект Application , на этот раз Excel, а затем ActiveSheet , который обеспечивает доступ к активному рабочему листу.После этого идет термин, который не так знаком, Range, что означает «определить таким образом диапазон ячеек». Код инструктирует Range создать себя только с A1 в качестве определенного набора ячеек. Другими словами, первая строка кода определяет объект Range и запускает для него метод, чтобы выбрать его. Результат автоматически сохраняется в другом свойстве Application , которое называется Selection .
Вторая строка кода устанавливает для свойства Value объекта Selection текст «Hello World», и это значение отображается в ячейке A1.
Простейший код VBA, который вы пишете, может просто получить доступ к объектам в приложении Office, с которым вы работаете, и задать свойства. Например, вы можете получить доступ к строкам в таблице в Word и изменить их форматирование в сценарии VBA.
Звучит просто, но может быть невероятно полезным; как только вы сможете написать этот код, вы сможете использовать всю мощь программирования для внесения тех же изменений в несколько таблиц или документов или внести их в соответствии с некоторой логикой или условием.Для компьютера внесение 1000 изменений ничем не отличается от внесения 10, поэтому здесь есть экономия на масштабе с более крупными документами и проблемами, и именно здесь VBA может действительно проявить себя и сэкономить ваше время.
Макросы
и редактор Visual Basic
Теперь, когда вы знаете кое-что о том, как приложения Office предоставляют свои объектные модели, вы, вероятно, захотите попробовать вызвать методы объекта, задать свойства объекта и отреагировать на события объекта. Для этого вы должны написать свой код в месте и таким образом, чтобы Office мог его понять; обычно с помощью редактора Visual Basic. Хотя он установлен по умолчанию, многие пользователи даже не знают, что он доступен, пока он не будет включен на ленте.
Все приложения Office используют ленту. Одна вкладка на ленте — это вкладка Developer , где вы получаете доступ к редактору Visual Basic и другим инструментам разработчика. Поскольку Office не отображает вкладку Developer по умолчанию, необходимо включить ее, выполнив следующую процедуру:
Включение вкладки «Разработчик»
На вкладке Файл выберите Параметры , чтобы открыть диалоговое окно Параметры .
Выберите Настроить ленту в левой части диалогового окна.
В разделе Выберите команды из в левой части диалогового окна, выберите Популярные команды .
В разделе Настроить ленту в правой части диалогового окна выберите Основные вкладки в раскрывающемся списке, а затем установите флажок Developer .
Выбрать ОК .
Примечание
В Office 2007 вы открыли вкладку Developer , нажав кнопку Office, выбрав Options , а затем установив флажок Show Developer на ленте в категории Popular диалогового окна Options .
После включения вкладки Developer легко найти кнопки Visual Basic и Macros .
Рисунок 1.Кнопки на вкладке «Разработчик»
Проблемы безопасности
Чтобы защитить пользователей Office от вирусов и опасного кода макроса, вы не можете сохранить код макроса в стандартном документе Office, который использует стандартное расширение файла. Вместо этого вы должны сохранить код в файле со специальным расширением. Например, вы не можете сохранять макросы в стандартном документе Word с расширением .docx; вместо этого вы должны использовать специальный документ Word с поддержкой макросов с расширением . docm.
Когда вы открываете файл.docm, служба безопасности Office может по-прежнему препятствовать запуску макросов в документе, сообщая вам или не сообщая об этом. Изучите настройки и параметры в Центре управления безопасностью всех приложений Office. Настройка по умолчанию отключает запуск макроса, но предупреждает вас, что макросы были отключены, и дает вам возможность снова включить их для этого документа.
Вы можете назначить определенные папки, в которых могут запускаться макросы, создав «Надежные расположения», «Надежные документы» или «Надежные издатели». Самый переносимый вариант — использовать Trusted Publishers, который работает с документами с цифровой подписью, которые вы распространяете.Для получения дополнительных сведений о параметрах безопасности в конкретном приложении Office откройте диалоговое окно Параметры , выберите Центр управления безопасностью , а затем выберите Параметры центра управления безопасностью .
Примечание
Некоторые приложения Office, например Outlook, по умолчанию сохраняют макросы в главном шаблоне на локальном компьютере. Хотя эта стратегия уменьшает проблемы локальной безопасности на вашем собственном компьютере при запуске собственных макросов, она требует стратегии развертывания, если вы хотите распространять свой макрос.
Запись макроса
Когда вы нажимаете кнопку Macro на вкладке Developer , открывается диалоговое окно Macros , которое дает вам доступ к подпрограммам или макросам VBA, к которым вы можете получить доступ из определенного документа или приложения. Кнопка Visual Basic открывает редактор Visual Basic, в котором вы можете создавать и редактировать код VBA.
Другая кнопка на вкладке Developer в Word и Excel — это кнопка Record Macro , которая автоматически генерирует код VBA, который может воспроизводить действия, которые вы выполняете в приложении. Record Macro — потрясающий инструмент, который вы можете использовать, чтобы узнать больше о VBA. Чтение сгенерированного кода может дать вам представление о VBA и обеспечить надежный мост между вашими знаниями Office как пользователя и вашими знаниями как программиста. Единственное предостережение заключается в том, что сгенерированный код может сбивать с толку, потому что редактор макросов должен делать некоторые предположения о ваших намерениях, и эти предположения не обязательно точны.
Для записи макроса
Откройте Excel в новой книге и выберите вкладку Developer на ленте.Выберите Record Macro и примите все настройки по умолчанию в диалоговом окне Record Macro , включая Macro1 в качестве имени макроса и This Workbook в качестве местоположения.
Выберите OK , чтобы начать запись макроса. Обратите внимание, как текст кнопки изменится на Остановить запись . Нажмите эту кнопку в тот момент, когда вы завершите действия, которые хотите записать.
Выберите ячейку B1 и введите классическую первую строку программиста: Hello World.Прекратите печатать и посмотрите на кнопку Остановить запись ; он неактивен, потому что Excel ожидает, когда вы закончите вводить значение в ячейке.
Выберите ячейку B2, чтобы завершить действие в ячейке B1, а затем выберите Остановить запись .
Выберите Macros на вкладке Developer , выберите Macro1 , если он не выбран, а затем выберите Edit , чтобы просмотреть код из Macro1 в редакторе Visual Basic.
Рис. 2. Код макроса в редакторе Visual Basic
Смотрим на код
Созданный вами макрос должен выглядеть примерно так, как показано ниже.
Субмакрос1 ()
'
'Macro1 Macro
'
'
Диапазон ("B1"). Выберите
ActiveCell.FormulaR1C1 = "Привет, мир"
Диапазон ("B2"). Выбрать
Конец подписки
Обратите внимание на сходство с предыдущим фрагментом кода, в котором выделен текст в ячейке A1, и на различия.В этом коде выбирается ячейка B1, а затем строка «Hello World» применяется к ячейке, которая была сделана активной. Кавычки вокруг текста указывают строковое значение, а не числовое значение.
Помните, как вы выбрали ячейку B2, чтобы снова отобразить кнопку Остановить запись ? Это действие также отображается как строка кода. Регистратор макросов записывает каждое нажатие клавиши.
Строки кода, начинающиеся с апострофа и окрашенные в зеленый цвет редактором, являются комментариями, которые объясняют код или напоминают вам и другим программистам о его назначении.VBA игнорирует любую строку или часть строки, начинающуюся с одинарной кавычки. Написание четких и уместных комментариев в коде — важная тема, но это обсуждение выходит за рамки данной статьи. Последующие ссылки на этот код в статье не включают эти четыре строки комментариев.
Когда средство записи макросов генерирует код, он использует сложный алгоритм для определения методов и свойств, которые вы намеревались. Если вы не узнаете данное свойство, существует множество доступных ресурсов, которые могут вам помочь.Например, в записанном макросе средство записи макросов сгенерировало код, который ссылается на свойство FormulaR1C1 . Не знаете, что это значит?
Примечание
Имейте в виду, что Application объект подразумевается во всех макросах VBA. Записанный вами код работает с приложением . в начале каждой строки.
Использование справки разработчика
Выберите FormulaR1C1 в записанном макросе и нажмите F1. Справочная система выполняет быстрый поиск, определяет, что соответствующие темы находятся в разделе Excel Developer справки Excel, и перечисляет свойство FormulaR1C1 . Вы можете выбрать ссылку, чтобы узнать больше об этом свойстве, но прежде обратите внимание на ссылку Справочник по объектной модели Excel в нижней части окна. Выберите ссылку, чтобы просмотреть длинный список объектов, которые Excel использует в своей объектной модели для описания рабочих листов и их компонентов.
Выберите любой из них, чтобы просмотреть свойства и методы, применимые к этому конкретному объекту, а также перекрестные ссылки на различные связанные параметры. Во многих статьях справки также есть краткие примеры кода, которые могут вам помочь.Например, вы можете перейти по ссылкам в объекте Borders , чтобы узнать, как установить границу в VBA.
Рабочие листы (1) .Range ("A1"). Borders.LineStyle = xlDouble
Редактирование кода
Код границы отличается от записанного макроса. Одна вещь, которая может сбивать с толку объектную модель, заключается в том, что существует более одного способа обратиться к любому заданному объекту, ячейке A1 в этом примере.
Иногда лучший способ научиться программированию — это внести незначительные изменения в рабочий код и посмотреть, что в результате произойдет.Попробуй это сейчас. Откройте Macro1 в редакторе Visual Basic и измените код на следующий.
Субмакрос1 ()
Рабочие листы (1) .Range ("A1"). Value = "Wow!"
Рабочие листы (1) .Range ("A1"). Borders.LineStyle = xlDouble
Конец подписки
Подсказка
По возможности используйте копирование и вставку при работе с кодом, чтобы избежать опечаток.
Вам не нужно сохранять код, чтобы опробовать его, поэтому вернитесь к документу Excel, выберите Macros на вкладке Developer , выберите Macro1 , а затем выберите Run .Ячейка A1 теперь содержит текст Wow! и имеет двойную рамку вокруг него.
Рисунок 3. Результаты вашего первого макроса
Вы просто объединили запись макроса, чтение документации по объектной модели и простое программирование, чтобы создать программу VBA, которая что-то делает. Поздравляю!
Не получилось? Читайте предложения по отладке в VBA.
Советы и приемы программирования
Начать с примеров
Сообщество VBA очень велико; поиск в Интернете почти всегда может дать пример кода VBA, который делает что-то похожее на то, что вы хотите сделать.Если вы не можете найти хороший пример, попробуйте разбить задачу на более мелкие части и искать по каждой из них, или попробуйте придумать более общую, но похожую проблему. Начав с примера, вы сэкономите часы времени.
Это не означает, что бесплатный и хорошо продуманный код находится в сети и ждет, когда вы придете с ним. Фактически, в некотором коде, который вы обнаружите, могут быть ошибки. Идея в том, что примеры, которые вы найдете в Интернете или в документации VBA, дадут вам фору. Помните, что изучение программирования требует времени и размышлений.Прежде чем вы броситесь использовать другое решение для решения вашей проблемы, спросите себя, является ли VBA правильным выбором для этой проблемы.
Сделайте задачу проще
Программирование может быстро усложняться. Очень важно, особенно для новичка, разбить проблему на минимально возможные логические единицы, а затем записать и протестировать каждую часть по отдельности. Если перед вами слишком много кода, и вы запутались или запутались, остановитесь и отложите проблему в сторону. Когда вы вернетесь к проблеме, скопируйте небольшой фрагмент проблемы в новый модуль, решите этот фрагмент, заставьте код работать и протестируйте его, чтобы убедиться, что он работает.Затем переходите к следующей части.
Ошибки и отладка
Есть два основных типа ошибок программирования: синтаксические ошибки, которые нарушают грамматические правила языка программирования, и ошибки времени выполнения, которые выглядят синтаксически корректными, но терпят неудачу, когда VBA пытается выполнить код.
Хотя их может быть сложно исправить, синтаксические ошибки легко обнаружить; Редактор Visual Basic подает звуковой сигнал и мигает, если вы вводите синтаксическую ошибку в коде.
Например, строковые значения должны быть заключены в двойные кавычки в VBA.Чтобы узнать, что происходит при использовании одинарных кавычек, вернитесь в редактор Visual Basic и замените «Wow!» строка в примере кода с «Вау!» (то есть слово Wow заключено в одинарные кавычки). Если вы выберете следующую строку, редактор Visual Basic отреагирует. Ошибка «Ошибка компиляции: Ожидается: выражение» не так полезна, но строка, которая генерирует ошибку, становится красной, чтобы сообщить вам, что у вас есть синтаксическая ошибка в этой строке, и в результате эта программа не будет запущена.
Выберите OK и снова измените текст на «Вау!».
Ошибки времени выполнения обнаружить труднее, потому что синтаксис программирования выглядит правильно, но код не работает, когда VBA пытается его выполнить.
Например, откройте редактор Visual Basic и измените имя свойства Value на ValueX в макросе, намеренно вводя ошибку времени выполнения, поскольку объект Range не имеет свойства с именем ValueX. Вернитесь к документу Excel, откройте диалоговое окно Macros и снова запустите Macro1. Вы должны увидеть окно сообщения Visual Basic, в котором объясняется ошибка времени выполнения с текстом: «Объект не поддерживает это свойство метода.»Хотя этот текст ясен, выберите Отладка , чтобы узнать больше.
Когда вы возвращаетесь в редактор Visual Basic, он находится в специальном режиме отладки, в котором желтым цветом отображается строка кода, в которой произошел сбой. Как и ожидалось, выделена строка, содержащая свойство ValueX.
Вы можете вносить изменения в работающий код VBA, поэтому измените ValueX обратно на Value и нажмите маленькую зеленую кнопку воспроизведения под меню Debug . Программа должна снова запуститься в обычном режиме.
Хорошая идея — научиться более целенаправленно использовать отладчик для более длинных и сложных программ. Как минимум, узнайте, как устанавливать точки останова для остановки выполнения в точке, где вы хотите взглянуть на код, как добавлять часы, чтобы видеть значения различных переменных и свойств во время выполнения кода, и как пошагово выполнять код построчно. Все эти параметры доступны в меню Debug , и серьезные пользователи отладчика обычно запоминают соответствующие сочетания клавиш.
Скважина со справочными материалами
Чтобы открыть справочник разработчика, встроенный в справку Office, откройте справку справки из любого приложения Office, выбрав вопросительный знак на ленте или нажав клавишу F1. Затем справа от кнопки Search выберите стрелку раскрывающегося списка, чтобы отфильтровать содержимое. Выберите Справочник разработчика . Если вы не видите оглавление на левой панели, выберите маленький значок книги, чтобы открыть его, а затем разверните оттуда ссылку на объектную модель.
Рис. 5. Фильтрация в справке разработчика применяется ко всем приложениям Office
Время, потраченное на просмотр справочника по объектной модели, окупается. Поняв основы синтаксиса VBA и объектную модель приложения Office, с которым вы работаете, вы переходите от догадок к методическому программированию.
Конечно, Центр разработчиков Microsoft Office — отличный портал для статей, советов и информации сообщества.
Поиск в форумах и группах
Все программисты иногда застревают, даже после прочтения каждой справочной статьи, которую они могут найти, и бессонницы по ночам, думая о различных способах решения проблемы.К счастью, в Интернете появилось сообщество разработчиков, которые помогают друг другу решать проблемы программирования.
Любой поиск в Интернете по запросу «форум разработчиков офисных приложений» обнаруживает несколько групп обсуждения. Вы можете выполнить поиск по «офисному развитию» или описанию своей проблемы, чтобы найти форумы, сообщения в блогах и статьи.
Если вы сделали все возможное для решения проблемы, не бойтесь задать свой вопрос на форуме разработчиков. На этих форумах приветствуются сообщения от новых программистов, и многие опытные разработчики рады помочь.
Ниже приведены некоторые правила этикета, которым следует следовать при публикации сообщений на форуме разработчиков:
Перед тем, как публиковать сообщения, поищите на сайте ответы на часто задаваемые вопросы или рекомендации, которым участники хотят, чтобы вы следовали. Убедитесь, что вы публикуете контент, который соответствует этим правилам, и в правильном разделе форума.
Включите ясный и полный пример кода и рассмотрите возможность редактирования кода, чтобы прояснить его для других, если он является частью более длинного раздела кода.
Четко и кратко опишите вашу проблему и кратко опишите все шаги, которые вы предприняли для ее решения. Найдите время, чтобы написать свой пост как можно лучше, особенно если вы взволнованы или торопитесь. Представьте ситуацию так, чтобы читатели впервые прочитали постановку задачи.
Будьте вежливы и выразите признательность.
Дальнейшее программирование
Хотя эта статья короткая и лишь поверхностно описывает VBA и программирование, мы надеемся, что ее достаточно, чтобы вы начали.
В этом разделе вкратце обсуждаются еще несколько ключевых тем.
Переменные
В простых примерах в этой статье вы манипулировали объектами, которые приложение уже создало. Возможно, вы захотите создать свои собственные объекты для хранения значений или ссылок на другие объекты для временного использования в вашем приложении. Они называются переменными.
Чтобы использовать переменную в VBA, необходимо указать VBA, какой тип объекта представляет переменная, с помощью оператора Dim .Затем вы устанавливаете его значение и используете его для установки других переменных или свойств.
Dim MyStringVariable As String
MyStringVariable = "Вау!"
Рабочие листы (1) .Range ("A1"). Value = MyStringVariable
Разветвление и зацикливание
Простые программы в этой статье выполняются по одной строке сверху вниз. Настоящая сила в программировании исходит от опций, которые вы должны определить, какие строки кода выполнять, на основе одного или нескольких указанных вами условий.Вы можете расширить эти возможности еще больше, если можете повторять операцию много раз. Например, следующий код расширяет Macro1.
Субмакрос1 ()
Если Worksheets (1) .Range ("A1"). Value = "Да!" потом
Dim i как целое число
Для i = от 2 до 10
Рабочие листы (1) .Range ("A" & i) .Value = "OK!" & I
Далее я
Еще
MsgBox «Поместите Да! В ячейку A1»
Конец, если
Конец подписки
Введите или вставьте код в редактор Visual Basic, а затем запустите его.Следуйте инструкциям в появившемся окне сообщения и измените текст в ячейке A1 из Wow! к Да! и запустите его еще раз, чтобы увидеть возможности зацикливания. Этот фрагмент кода демонстрирует переменные, ветвление и цикл. Внимательно прочтите его после того, как увидите его в действии, и попытайтесь определить, что происходит при выполнении каждой строки.
Все мои приложения Office: пример кода
Вот несколько сценариев, которые стоит попробовать; каждый из них решает реальную проблему Office.
Создать электронную почту в Outlook
Sub MakeMessage ()
Тусклое сообщение OutlookMessage как Outlook. MailItem
Установите OutlookMessage = Application.CreateItem (olMailItem)
OutlookMessage.Subject = "Hello World!"
OutlookMessage.Display
Установите OutlookMessage = Nothing
Конец подписки
Имейте в виду, что есть ситуации, в которых вы можете автоматизировать электронную почту в Outlook; вы также можете использовать шаблоны.
Удалить пустые строки на листе Excel
Sub DeleteEmptyRows ()
SelectedRange = Selection.Rows.Count
ActiveCell.Offset (0, 0). Выбрать
Для i = 1 To SelectedRange
Если ActiveCell.Value = "" Тогда
Selection.EntireRow.Delete
Еще
ActiveCell.Offset (1, 0) .Select
Конец, если
Далее я
Конец подписки
Имейте в виду, что вы можете выбрать столбец ячеек и запустить этот макрос, чтобы удалить все строки в выбранном столбце, содержащие пустую ячейку.
Удалить пустые текстовые поля в PowerPoint
Sub RemoveEmptyTextBoxes ()
Dim SlideObj как слайд
Dim ShapeObj As Shape
Dim ShapeIndex As Integer
Для каждого SlideObj в ActivePresentation. Слайды
Для ShapeIndex = SlideObj.Shapes.Count To 1 Step -1
Установите ShapeObj = SlideObj.Shapes (ShapeIndex)
Если ShapeObj.Type = msoTextBox Тогда
Если Trim (ShapeObj.TextFrame.TextRange.Text) = "" Тогда
ShapeObj.Delete
Конец, если
Конец, если
Следующий ShapeIndex
Следующий SlideObj
Конец подписки
Имейте в виду, что этот код просматривает все слайды и удаляет все текстовые поля, в которых нет текста. Переменная count уменьшается, а не увеличивается, потому что каждый раз, когда код удаляет объект, он удаляет этот объект из коллекции, что уменьшает счетчик.
Копирование контакта из Outlook в Word
Sub CopyCurrentContact ()
Dim OutlookObj как объект
Dim InspectorObj как объект
Dim ItemObj как объект
Установите OutlookObj = CreateObject ("Outlook.Application")
Установите InspectorObj = OutlookObj.ActiveInspector
Установите ItemObj = InspectorObj. CurrentItem
Application.ActiveDocument.Range.InsertAfter (ItemObj.FullName & "from" & ItemObj.CompanyName)
Конец подписки
Имейте в виду, что этот код копирует текущий открытый контакт в Outlook в открытый документ Word.Этот код работает, только если в Outlook есть контакт, открытый для проверки.
Поддержка и отзывы
Есть вопросы или отзывы об Office VBA или этой документации? См. Раздел Поддержка и отзывы Office VBA, чтобы узнать, как получить поддержку и оставить отзыв.
Проверить или добавить ссылку на библиотеку объектов (VBA)
- 2 минуты на чтение
В этой статье
Если вы используете объекты в других приложениях как часть вашего приложения Visual Basic, вы можете захотеть установить ссылку на библиотеки объектов этих приложений. Прежде чем вы сможете это сделать, вы должны сначала убедиться, что приложение предоставляет библиотеку объектов.
Чтобы узнать, предоставляет ли приложение библиотеку объектов
В меню Инструменты выберите Ссылки , чтобы открыть диалоговое окно Ссылки .
В диалоговом окне Ссылки показаны все библиотеки объектов, зарегистрированные в операционной системе. Прокрутите список до приложения, библиотеку объектов которого вы хотите сослаться.Если приложения нет в списке, вы можете использовать кнопку Обзор для поиска библиотек объектов (* .olb и * .tlb) или исполняемых файлов (* .exe и * .dll в Windows). Ссылки, флажки которых установлены, используются вашим проектом; те, которые не выбраны, не используются, но могут быть добавлены.
Чтобы добавить ссылку на библиотеку объектов в свой проект
Выберите ссылку на библиотеку объектов в поле Доступные ссылки в диалоговом окне Ссылки и выберите OK . Теперь в вашем проекте Visual Basic есть ссылка на библиотеку объектов приложения. Если вы откроете обозреватель объектов (нажмите F2) и выберите библиотеку приложения, он отобразит объекты, предоставленные выбранной библиотекой объектов, а также методы и свойства каждого объекта.
В обозревателе объектов можно выбрать класс в поле Классы и выбрать метод или свойство в поле Элементы . Используйте копирование и вставку, чтобы добавить синтаксис в свой код.
См. Также
Поддержка и отзывы
Есть вопросы или отзывы об Office VBA или этой документации? См. Раздел Поддержка и отзывы Office VBA, чтобы узнать, как получить поддержку и оставить отзыв.
VBA Visual Basic Editor — Ссылки
Ссылки
Вы можете ссылаться на библиотеки объектов, чтобы сделать их объекты доступными в вашем коде (Инструменты> Ссылки) .
Любые ссылки на внешние библиотеки объектов сохраняются в отдельном файле.
Прежде чем вы сможете использовать какие-либо функции, объекты, методы или свойства из внешних библиотек объектов, вы должны сначала добавить на них ссылку.
Если вы планируете управлять другими программами из приложения Office, вам нужно будет добавить необходимую ссылку.
AddFromFile
AddFromGuid
Remove
Для кода в одном проекте для вызова кода в другом проекте вызывающий проект должен иметь ссылку на вызывающий проект.
Этот список также включает ссылки на любые другие библиотеки объектов и любые элементы управления ActiveX, установленные на вашем компьютере.
Этот список содержит файлы, которые были автоматически зарегистрированы в реестре, появятся автоматически.
Раннее связывание
мы привязываем библиотеку внешних объектов к нашему приложению во время разработки
Использование раннего связывания дает следующие преимущества:
Код намного быстрее, как и все связи между библиотеками уже проверены и скомпилированы.
Оператор New может использоваться для создания экземпляров внешних объектов.
Все константы, определенные в библиотеке объектов, можно использовать, избегая магических чисел.
Excel отображает сведения об элементах автоматического списка, краткой автоматической информации и подсказках автоматических данных для объектов во время разработки приложения.
Однако это, конечно, один из основных недостатков.
Если вы попытаетесь запустить приложение на компьютере, на котором не установлены все внешние библиотеки объектов, вы получите ошибку времени компиляции, которую нельзя отловить обычными методами.
Позднее связывание
Если ссылки нет в списке, вы можете нажать кнопку «Обзор», чтобы добавить дополнительный файл.
Если библиотеки нет в списке, она помечается как «ОТСУТСТВУЕТ».
ОТСУТСТВУЕТ
Если какая-либо из ссылок отсутствует, она не найдет никаких ссылок
SS
Вы можете просмотреть библиотеки объектов (. olb и .tlb) или исполняемые файлы (.exe и .dll). Иногда вы можете обнаружить, что у вас есть «отсутствующие» ссылки.
Предполагая, что это не требуется, отмените выбор и выберите (Отладка> Скомпилировать проект).
Все флажки, напротив которых установлены флажки, обозначают библиотеки объектов, которые в настоящее время доступны для вашего проекта.
Обозреватель объектов
Любые ссылки, которые вы добавляете в свой проект, будут автоматически добавлены в раскрывающийся список библиотек в обозревателе объектов.
Общие функции
Имя функции | Описание |
URLDownloadFile | Загружает биты из Интернета и сохраняет их в виде файла |
winodw с определенным именем класса | |
SetWindowLong | Изменяет атрибут указанного окна |
DrawMenuBar | Перерисовывает строку меню в указанном окне |
GetWindowLong © 2021 Better Solutions Limited. Все права защищены. © 2021 Better Solutions Limited TopPrevNext Excel Объектная модель VBA и ссылки на объекты: Основное руководствоЕсли вы читали какие-либо другие руководства по макросам или VBA в Power Spreadsheets, вы, вероятно, заметили, что некоторые термины продолжают появляться и над. Одна из концепций, которые постоянно возникают и будут появляться в будущих руководствах, — это объекты. Основная причина этого проста: VBA «свободно основан на концепции объектно-ориентированного программирования».Как объясняет Джон Уокенбах в Excel 2013 Bible , это «означает, что он манипулирует объектами». Как следствие вышесказанного, , если вы действительно хотите освоить макросы Excel и Visual Basic для приложений, вы должны хорошо разбираться в следующих трех темах :
Мои две основные цели при написании этого руководства по VBA:
Точнее, в этом уроке по макросам я объясняю следующие темы : С самого начала я скажу, что темы объектной модели VBA в Excel и построения объектных ссылок VBA не очень просты. Однако… Ваши знания и понимание объектной модели Excel VBA и объектных ссылок будут улучшаться по мере того, как вы продолжаете изучать Visual Basic для приложений и работать с ним.Поэтому не волнуйтесь, если после прочтения этого руководства по VBA все не совсем ясно. Это руководство должно предоставить вам прочную основу и, после некоторой работы , я уверен, что вы освоите эту тему и будете знать все, что вам нужно об объектах Excel VBA . Давайте начнем с ответа на первый вопрос, который, вероятно, у вас есть относительно введения, которое я сделал выше, с понимания… Почему важна объектная модель VBA в ExcelVisual Basic для приложений входит в состав большинства продуктов, входящих в состав Microsoft Office. Помимо Excel, список приложений с VBA включает PowerPoint, Word и Access. Это подчеркивает одно из больших преимуществ изучения VBA: Когда вы освоите Visual Basic для приложений, вы можете сразу же приступить к написанию макросов для других продуктов, использующих VBA. Фактически, вы сможете создавать макросы, которые будут работать во всех этих различных приложениях. Одна из основных тем, которые вам нужно освоить, чтобы достичь такого уровня знаний, — это объекты .Причина этого четко объяснена Джоном Уокенбахом в Excel 2013 Power Programming with VBA :
ОК. Таким образом, объектная модель Excel VBA очень важна. Следующий вопрос, который может у вас возникнуть: Что такое объектная модель VBA в ExcelЯ сделаю это коротко.Как объяснил представитель Excel Дик Куслейка:
Помимо других преимуществ, эта иерархия упрощает ссылки на объекты VBA. Поэтому рассмотрим подробнее… Иерархия объектов VBA в ExcelИерархия объектов выглядит следующим образом: Когда вы работаете с определенным программным приложением, в первую очередь следует учитывать само приложение (объект Application).Как правило, приложение находится на вершине иерархии. В случае Excel объектом Application является сам Excel . Поскольку Visual Basic для приложений может взаимодействовать с другими приложениями и программами помимо Excel, это, строго говоря, не верхний уровень иерархии. Однако вы обычно увидите, что большинство людей ссылаются на сам объект Application как на вершину иерархии объектов VBA в Excel. Это соглашение, которое я использую в этом уроке по макросам. Объект Application содержит другие объекты VBA. Некоторые из объектов VBA, содержащихся в объекте приложения Excel, следующие:
Каждый из этих объектов VBA, в свою очередь, может содержать другие объекты. Например, как объяснил Джон Уокенбах в Excel VBA Programming for Dummies , некоторые из объектов VBA, которые могут содержаться в объекте Workbook, следующие:
Опять же, эти объекты VBA могут содержать другие объекты. Продолжая пример Уокенбаха, объект Worksheet может содержать следующие объекты VBA:
Графически часть иерархии объектов VBA в Excel, описанная выше, выглядит примерно так: Изображение выше показывает только очень небольшую часть иерархии объектов Excel VBA . Если вы хотите увидеть огромное количество объектов VBA, имеющихся в Excel, взгляните на карту объектной модели Excel 2007 или Справочник по объектной модели Excel. Если это выглядит ошеломляющим, не волнуйтесь. Вы определенно не одиноки. Даже сам Джон Уокенбах написал:
Что вы можете с этим сделать? Вы можете подумать, что если гуру Excel, чей блог о таблицах Excel ведется в сети с 1996 года и который несколько лет подряд признавался Microsoft MVP, также будет ошеломлен огромным количеством объектов Excel VBA, остальные из нас нет никаких разумных шансов освоить Visual Basic для приложений. К счастью, это неверно. Вы определенно можете освоить Visual Basic для приложений, несмотря на огромное количество объектов Excel VBA.Для этого есть несколько причин, в том числе следующие:
Кроме того, продолжая работать с Visual Basic для приложений, вы начнете замечать логику, лежащую в основе структуры иерархии объектов Excel VBA. Коллекции объектовКоллекции определяются двумя основными характеристиками:
Другими словами, коллекции — это объекты VBA, которые используются для группировки и управления другими объектами (которые связаны). Тот факт, что вы можете группировать несколько объектов VBA и управлять ими с помощью коллекций, чрезвычайно полезен в некоторых ситуациях. Представьте, например, что вы хотите сделать что-то с определенной группой объектов или с определенной группой объектов. Если все эти объекты являются частью одной коллекции, вы можете структурировать свой код VBA, чтобы пройти через каждого из членов коллекции и выполнить желаемые действия. Как вы понимаете, эта структура проще, чем, например, перечисление каждого из членов коллекции по отдельности. Другими словами, коллекции позволяют работать с полной группой объектов VBA одновременно , вместо того, чтобы работать с каждым отдельным объектом. В Excel VBA Programming for Dummies Джон Уокенбах перечисляет следующие примеры общих коллекций:
Фактически, если вы вернетесь к объяснению иерархии объектов VBA в Excel, вы найдете несколько других примеров коллекций. По сути, любой объект VBA, который указан там как содержащий другие объекты, является коллекцией. К настоящему времени вы, вероятно, уже хорошо понимаете, что такое объект и коллекция. Итак, перейдем к реальной практике. Давайте посмотрим, как можно начать ссылаться на объекты VBA с помощью Visual Basic для приложений: Введение в ссылки на объекты VBAВажно знать, как обращаться к объектам при написании кода VBA. Причина этого в том, что, очевидно, когда вы хотите начать работу с определенным объектом VBA, вы должны его идентифицировать. Вопрос, как ты это делаешь? Как вы ссылаетесь на объект в Visual Basic для приложений? Давайте рассмотрим некоторые из наиболее распространенных и основных ситуаций. Цель этого раздела — служить введением в ссылки на объекты VBA. Есть много других более сложных случаев. Например, я объясню несколько способов ссылки на объект Range VBA в Excel Объектная модель VBA и ссылки на объекты: Основное руководство , которое вы можете найти в архивах. Ссылки на объекты : полные ссылки и подключение объектов VBAДавайте начнем с того, что посмотрим, как ссылаться на объект, пройдя через всю иерархию объектов Excel VBA.Это называется полностью квалифицированной ссылкой, потому что вы точно указываете Excel, с каким объектом VBA хотите работать, ссылаясь на всех его родителей. Как я объясню в следующих разделах, обычно можно упростить полностью квалифицированные ссылки . Тем не менее, вы должны узнать, как работают полностью квалифицированные ссылки . Они являются основой объектных ссылок VBA, и на практике вы будете использовать их большую часть времени. Кроме того, они весьма полезны для лучшего понимания кода VBA, стоящего за вашими макросами. Вы уже знаете, что объект наверху иерархии объектов Excel VBA — это Приложение. Обратиться к этому объекту очень просто. В редакторе Visual Basic вы обратитесь к приложению, набрав:
С этого момента вам нужно начать движение по иерархии с помощью оператора точки (.). Другими словами, вы подключаете каждый объект VBA к предыдущему ( родительский объект ) с помощью точки (.) .Как объяснил Microsoft MVP Джон Акампора, эти точки (.) Используются для соединения и ссылки на элементы объектной модели Excel VBA «сверху вниз». Чтобы увидеть это на практике, вернемся к примеру иерархии объектов Excel VBA, который я показал выше. Предположим, вы хотите сослаться на объект Range. Как показано на приведенном ниже графике, этот объект находится внизу пирамиды, используемой в примере. Между приложением и объектом Range есть 2 объекта VBA и 3 шага, как показано на изображении ниже: Вы уже знаете, что вам просто нужно соединить разные объекты точкой (. ), пока вы спускаетесь по иерархии объектов Excel VBA. Другими словами, вы знаете, что в очень общих чертах вы можете ссылаться на объект Range, используя следующую базовую структуру:
Графически: Easy, не так ли? Однако это всего лишь базовая структура. Вы заметите, что эта самая базовая структура на самом деле не идентифицирует отдельный объект VBA. Вам может быть интересно:
Эти вопросы можно резюмировать следующим образом: Как вы ссылаетесь на конкретный объект в коллекции? Давайте ответим на этот вопрос, чтобы вы могли заполнить полную ссылку выше. Ссылки на объекты VBA: объект из коллекцииВероятно, большую часть времени вы будете работать с конкретным объектом VBA из коллекции . Это контрастирует с коллекцией в целом. Обратите внимание, что вы также можете работать с коллекцией в целом . Собственно, возможность это сделать — одно из преимуществ коллекций. Однако давайте сосредоточимся на том, как вы можете ссылаться на объект из коллекции.Для этих целей вы можете использовать любой из следующих двух вариантов: Вариант №1: Использование имени объекта VBA. В этом случае синтаксис, который вы должны использовать для ссылки на объект, — это «Имя_сборки (« Имя_объекта »)» . Другими словами:
Например, если вы работаете с книгой Excel, содержащей 3 листа, и хотите работать с Sheet1, вы можете использовать одно из следующих действий:
или
Вариант № 2: Использование порядкового номера. Если вы решите использовать эту опцию, вы обратитесь к объекту VBA с помощью «Имя_собрания (индекс_номер)» . Эта структура практически такая же, как и выше, со следующими двумя отличиями :
Возвращаясь к приведенному выше примеру, где вы хотите работать с Sheet1, вы можете использовать любой из следующих двух вариантов:
или
Теперь, когда вы знаете, как ссылаться на отдельный объект VBA в коллекции, давайте вернемся к полной ссылке, которую я использовал в качестве примера в разделе выше:
Как вы можете это сделать, предполагая, что объект, с которым вы хотите работать, — это ячейка A1 из листа Sheet1 внутри Workbook Book1? Если вы используете имя объекта для ссылки на каждый из отдельных объектов VBA (вариант №1 выше), полная ссылка для этой ячейки будет:
Как вы можете догадаться, если бы вам пришлось ссылаться на каждый отдельный объект, используя полностью определенную ссылку, ваш код VBA стал бы очень длинным и очень быстро.С точки зрения набора текста это может немного раздражать. Кроме того, что, возможно, более важно, эти очень длинные фрагменты кода VBA могут быть трудными для чтения. Есть несколько способов упростить ссылки на объекты, сделав код VBA намного короче. Давайте посмотрим на некоторые методы, которые вы можете применить для этих целей… Упрощение полностью квалифицированных ссылок на объектыВозможность упростить ссылку на объект VBA имеет несколько преимуществ. В основном это позволяет сократить код VBA и упростить его чтение. Основная причина, по которой вы можете упростить полностью определенные ссылки на объекты, заключается в том, что объектная модель Excel VBA имеет некоторые объекты по умолчанию . Эти объекты по умолчанию используются в Excel, если вы не введете другое значение. Это подводит меня к очень важному моменту, а именно, что… Упрощение полностью определенных ссылок на объекты небезопасно . В частности, второй метод упрощения, описанный ниже, полагается на то, что вы правильно определите текущую активную Рабочую книгу и Рабочий лист.Если вы совершите ошибку, например, думая, что текущий активный рабочий лист — это Sheet1, тогда как на самом деле это Sheet2, вы столкнетесь с проблемами. Наиболее вероятные проблемы, с которыми вы столкнетесь в этих случаях:
Другой возможный недостаток упрощения полностью определенных ссылок на объекты связан со скоростью выполнения. Это происходит, например, если вы работаете с определенным макросом, который работает с несколькими листами Excel.В этом случае вы должны пройти их все, чтобы активировать их. Излишне говорить, что это не очень эффективно. Принимая во внимание вышеизложенное, убедитесь, что вы используете эти методы упрощения только тогда, когда это необходимо. Возможно, что более важно, помните, что вы не должны все время слепо упрощать полностью квалифицированные ссылки . Фактически, в Excel VBA Programming for Dummies Джон Уокенбах говорит, что:
Другие эксперты по Excel, такие как Дик Куслейка, также заявили, что они обычно не полагаются на объекты по умолчанию, за некоторыми исключениями . Одно из этих основных исключений, как я объясню ниже, зависит от объекта по умолчанию Application. Этот конкретный объект VBA редко включается в код VBA, хотя в некоторых случаях вы должны ссылаться на приложение. Другими словами, глубокое знание объектной модели Excel VBA и использование полностью квалифицированных ссылок дает два основных преимущества: Альтернативой крайним вариантам полного уточнения ссылок или их упрощению, которые предлагают и Валькенбах, и Куслейка, является использование операторов With… End With.Эти операторы упрощают синтаксис макросов, выполняя несколько операторов, которые относятся к одному и тому же объекту VBA. В то же время, благодаря своей структуре, они позволяют поддерживать полностью определенные ссылки на объекты. В этом макросе вы можете увидеть очень простой пример оператора With… End With, который удаляет строки в зависимости от того, является ли ячейка в заданном диапазоне пустой. Kusleika также предлагает дополнительные методы для управления вашим кодом, не полагаясь на объекты по умолчанию. Вы можете ознакомиться с его предложениями здесь. Помня о приведенном выше предупреждении, давайте рассмотрим методы, которые вы можете использовать для упрощения полностью определенных ссылок на объекты: Упрощение №1: объект приложения. Основным объектом VBA по умолчанию является объект приложения. Как упоминалось на dailydoseofexcel.com, этот объект всегда предполагается , и не имеет значения, где на самом деле находится код VBA. При создании макросов предполагается, что вы будете работать с Excel.Другими словами, Excel предполагает, что вы работаете с объектом Application. Поэтому, как и следовало ожидать, вы можете вообще опустить этот объект Excel VBA в своих ссылках на объекты. Согласно Джону Уокенбаху в книге Excel VBA Programming for Dummies , ввод объекта Application имеет смысл только в некоторых случаях . Применение этого ярлыка к оператору, относящемуся к ячейке A1 в Sheet1 в Book1, который использовался в качестве примера, упрощает ссылку следующим образом:
Упрощение № 2: Активная рабочая тетрадь и рабочий лист. Вторая группа объектов по умолчанию, которые вы можете использовать для упрощения полных ссылок на объекты , применяется, когда вы работаете внутри стандартного модуля . В редакторе Visual Basic вы обычно можете найти стандартные модули в окне проекта в узле «Модули»: В этих случаях, помимо предположения, что вы работаете с объектом Application, Excel также предполагает, что вы работаете с активной книгой. Следовательно, , если вы знаете, что текущая активная книга Excel — это рабочая книга, с которой вы хотите работать, вы можете опустить эту часть ссылки на объект VBA . Продолжая приведенный выше пример, оператор может быть сокращен до следующего:
Наконец, , если вы уверены, что лист Excel, с которым вы хотите работать, является текущим активным листом, вы также можете опустить эту часть ссылки на объект VBA . Приведенное выше утверждение можно сократить еще больше:
В дополнение к опасностям использования этого упрощения, которые я объясняю в начале этого раздела, вы должны учитывать еще один аспект. Два предположения, которые я перечислил в Упрощении №2 выше, работают только до тех пор, пока вы находитесь в стандартном модуле . Следовательно, вы не должны полагаться на эти предположения при работе с другим типом модуля. Например, как описано в Ежедневной дозе Excel:
ЗаключениеОбъектная модель VBA в Excel чрезвычайно важна. Вы не можете игнорировать эту тему, если действительно хотите стать мастером макросов Excel и Visual Basic для приложений . По словам Джона Уокенбаха:
Объектная модель VBA Excel — не самая простая тема для понимания, но если вы будете практиковаться и изучать, вы в конечном итоге овладеете этой темой. Затем вы приступите к созданию мощных макросов, которые повысят вашу продуктивность и эффективность при работе с Excel. Если вы изучили этот конкретный учебник по VBA, , вы не только хорошо понимаете, что такое объектная модель VBA в Excel, но также знаете, как начать создание объектных ссылок в Visual Basic для приложений .Эта возможность создавать соответствующие ссылки на объекты VBA — это то, что позволяет вам указать Excel, с каким объектом вы хотите работать и манипулировать. Это важный навык, который теперь у вас есть в вашем поле знаний VBA. Из-за сложности и обширности объектной модели VBA в Excel, — это тема, которую мы все постоянно изучаем и изучаем . Книги, на которые есть ссылки в этом учебном пособии по Excel
18 полезных способов обращения к диапазонам ячеекЧто первое, что приходит вам в голову, когда думаешь об Excel? В моем случае это, наверное, клетки. В конце концов, большую часть времени мы проводим в Excel, мы работаем с ячейками . Поэтому логично, что при использовании Visual Basic для приложений с целью повышения эффективности пользователей Excel одна из тем, которые мы должны изучить, — это работа с ячейками в среде VBA. Это руководство по VBA дает базовое объяснение того, как работать с ячейками с помощью Visual Basic для приложений. Точнее, в этом посте я объясняю все основные детали, которые вам нужно знать для работы с объектом Excel VBA Range. Диапазон — это объект, который вы используете для ссылок и работы с ячейками в VBA. Однако важность объекта Excel VBA Range этим не исчерпывается. Значительная часть работы, которую вы выполняете с Excel, связана с объектом Range.Объект Range — один из наиболее часто используемых объектов в Excel VBA. Несмотря на важность диапазона VBA в Excel, создание ссылок на объекты обычно является одной из самых запутанных тем для пользователей, которые начинают работать с макросами и Visual Basic для приложений. В случае диапазонов ячеек это (до некоторой степени) понятно, поскольку VBA позволяет ссылаться на диапазоны разными способами . Факт остается фактом: независимо от того, насколько запутанной может быть тема объекта Excel VBA Range, вы должны освоить его, чтобы стать специалистом по макросам и VBA. Моя основная цель в этом руководстве по VBA — помочь вам разобраться в основных вопросах, связанных с этой темой, и проиллюстрировать наиболее распространенные способы обращения к объекту Excel VBA Range с помощью Visual Basic для приложений . Точнее, , в этом посте вы узнаете о следующих темах, связанных с объектом Excel VBA Range : Давайте начнем с более детального рассмотрения… Что такое объект диапазона VBA в ExcelДиапазон VBA Excel является объектом.Объекты — это то, чем управляет Visual Basic для приложений. Точнее, вы можете использовать объект Range для представления диапазона на рабочем листе . Это означает, что, используя объект Excel VBA Range, вы можете обратиться к:
Как видно из вышеизложенного, размер объектов Excel VBA Range может сильно различаться. На самом базовом уровне вы можете ссылаться на одну (1) ячейку. С другой стороны, у вас есть возможность ссылаться на все ячейки на листе Excel. Несмотря на эту гибкость при обращении к ячейкам в конкретном листе Excel, объект Excel VBA Range имеет некоторые ограничения. Наиболее актуально то, что вы можете использовать только для ссылки на один рабочий лист Excel за раз . Следовательно, чтобы ссылаться на диапазоны ячеек на разных листах, вы должны использовать отдельные ссылки для каждого из листов. Как обратиться к объекту диапазона VBA в ExcelПервое, что вам нужно узнать, чтобы освоить объект VBA Range в Excel, — это как обращаться к нему. В следующих разделах объясняются наиболее важные правила, которые вам нужно знать, чтобы создавать соответствующие ссылки. Первые несколько разделов охватывают самый простой способ обращения к объекту Excel VBA Range: свойство Range . Таким же образом средство записи макросов обычно обращается к объекту Range. Однако ниже вы найдете некоторые дополнительные методы для создания ссылок на объекты, такие как использование свойств Cells или Offset. Однако это не единственный способ ссылаться на объекты Excel VBA Range. Есть несколько более продвинутых методов, таких как использование метода Application.Union, которые я не рассматриваю в этом руководстве по VBA для начинающих. Вам может быть интересно, какой способ лучше всего использовать для ссылки на объект Excel VBA Range? Как правило, лучший метод для создания ссылки на объект Excel VBA Range зависит от контекста и ваших конкретных потребностей . Введение в ссылки на объект диапазона VBA в Excel и квалификатор объектаЧтобы правильно работать с объектами Range, вы должны понимать, как работать с двумя основными частями ссылки на объект Excel VBA Range :
В этом руководстве по VBA основное внимание уделяется второму элементу, указанному выше: основным свойствам, которые вы можете использовать для ссылки на объект Excel VBA Range. Тем не менее, ниже я объясню несколько ключевых моментов, касающихся привязки к объектам. Если вы хотите узнать больше об общих правилах, применяемых к ссылкам на объекты, обратитесь к документу Excel VBA Object Model And Object References: The Essential Guide , который вы можете найти в архивах. Введение в полностью квалифицированные ссылки на объекты VBAОбъекты могут действовать как контейнеры для других объектов. На базовом уровне, ссылаясь на конкретный объект, вы сообщаете Excel, что это за объект, ссылаясь на всех его родителей . Другими словами, вы просматриваете иерархию объектов VBA в Excel. Вы перемещаетесь по иерархии объектов Excel, используя оператор точки (.) для соединения объектов на каждом из различных уровней. Эти типы конкретных ссылок известны как полностью определенные ссылки. Как выглядит полная ссылка в случае объекта Excel VBA Range? Объект наверху иерархии объектов Excel VBA — Приложение. Само приложение содержит другие объекты. Объект Excel VBA Range содержится в объекте Worksheet. Точнее:
Родительским объектом Worksheets является объект Workbook. Сами книги содержатся в объекте Application. Иерархическая взаимосвязь между этими различными объектами выглядит следующим образом: Следовательно, базовая структура , которую вы должны использовать для ссылки на объект диапазона VBA в Excel, выглядит следующим образом: Приложение. Рабочие тетради.Рабочие листы. Диапазон
Обратите внимание, как в первом методе вы должны использовать кавычки («») в круглых скобках. Если вы используете второй метод, вам не нужно заключать Index_number в кавычки. Предположим, что вы хотите работать с Рабочим листом с именем «Sheet1» в Рабочей книге «Book1.xlsm». В зависимости от того, какой из 2 методов для ссылки на объект в коллекции вы используете, ссылка выглядит по-разному. Если вы создаете ссылку, используя имя объекта VBA, ссылка будет выглядеть следующим образом: Application.Workbooks ("Book1.xlsm"). Worksheets ("Sheet1"). Range
Объект Application всегда предполагается. Другими словами, Visual Basic для приложений всегда предполагает, что вы работаете с самим Excel. Следовательно, вы можете упростить ваши полностью определенные ссылки на объекты, опуская Application.Например, в случаях, которые я использую в качестве примера выше, упрощенные ссылки выглядят следующим образом: Рабочие тетради ("Book1.xlsm"). Рабочие листы ("Sheet1"). Диапазон Рабочие тетради (1). Рабочие листы (1). Диапазон
Другими словами, свойство Range может применяться к 2 различным типам объектов :
В приведенных выше разделах я объясняю, как создавать полностью определенные ссылки на объекты. Вы, наверное, заметили, что во всех приведенных выше примерах родительский объект Excel VBA Range является объектом Worksheet. Другими словами, в этих случаях свойство Range применяется к объекту Worksheet. Однако вы также можете применить свойство Range к объекту Range. Если вы это сделаете, объект, возвращаемый свойством Range, изменится. Причина этого, как поясняет Microsoft, заключается в том, что Range.Свойство диапазона действует по отношению к объекту, к которому оно применяется, к . Следовательно, если вы примените свойство Range. Range, свойство действует относительно объекта Range, а не листа. Это означает, что вы можете применить свойство Range.Range для ссылки на диапазон по отношению к другому диапазону . Ниже я привожу примеры того, как работает такая ссылка. Базовый синтаксис свойства диапазонаБазовый синтаксис , который можно использовать для ссылки на объект диапазона VBA в Excel, — «выражение.Диапазон («Cell_Range») ». Вы заметите, что этот синтаксис соответствует общим правилам, которые я объяснил выше для других объектов VBA, таких как Workbooks и Worksheets. В частности, вы заметите, что есть 4 основных элемента:
В этом конкретном случае «выражение» — это просто переменная, представляющая объект Worksheet (в случае свойства Worksheet.Range) или объект Range (для объекта Range.Range). Возможно, наиболее интересным элементом синтаксиса свойства Range является Cell_Range. Давайте посмотрим на некоторые его характеристики… В очень общих чертах, обычно можно ссылаться на Cell_Range так же, как вы используете при написании обычной формулы Excel .Это означает использование ссылок в стиле A1. Однако есть несколько важных особенностей, о которых я расскажу в этом разделе. Не волнуйтесь, если поначалу все кажется немного запутанным. Я показываю несколько примеров ссылок в следующих разделах, чтобы все было понятно. Вы можете использовать 2 разных синтаксиса для определения диапазона , с которым вы хотите работать: Синтаксис №1: («Ячейка1»)Это минимум, который необходимо включить для определения соответствующего диапазона ячеек. Как правило, при использовании этого синтаксиса аргумент (Cell1) должен иметь одно из следующих значений:
При присвоении имени диапазону можно использовать любой из следующих 3 операторов:
Синтаксис № 2: «(Ячейка1, Ячейка2)»Если вы решите использовать этот синтаксис, вы в основном очерчиваете соответствующий диапазон, называя ячейки в двух его углах:
Однако этот синтаксис не такой строгий, как может показаться на первый взгляд. В этом случае аргументы могут включать:
Давайте посмотрим на некоторые конкретные применения свойства Range: Как сослаться на отдельную ячейку с помощью рабочего листа.Свойство диапазонаЕсли объект Excel VBA Range, на который вы хотите сослаться, представляет собой одну ячейку, синтаксис будет просто «Диапазон (« Ячейка »)» . Например, если вы хотите сделать ссылку на одну ячейку, такую как A1, введите «Диапазон (« A1 ″) ». Мы можем пойти дальше и создать полную ссылку для этой единственной ячейки, предполагая, что мы продолжаем работать с Sheet1 в Book1.xlsm: Application.Workbooks ("Book1.xlsm"). Worksheets ("Sheet1").Диапазон ("A1")
Например, если вы хотите обратиться к первой строке (Строка 1) определенного рабочего листа Excel, синтаксис будет «Диапазон (« 1: 1 ″) ». Если, с другой стороны, вы хотите сослаться на первый столбец (столбец A), вы вводите «Диапазон (« A: A »). Предполагая, что вы работаете с Листом 1 в Book1.xlsm, полные ссылки будут следующими: Приложение.Рабочие тетради ("Book1.xlsm"). Рабочие листы ("Sheet1"). Диапазон ("1: 1") Application.Workbooks ("Book1.xlsm"). Worksheets ("Sheet1"). Range ("A: A")
Давайте посмотрим, как они оба выглядят на практике: Если вы хотите сделать ссылку на диапазон ячеек между ячейками A1 и B5 (A1, A2, A3, A4, A5, B1, B2, B3, B4 и B5), подходящим синтаксисом будет «Диапазон (« A1: B5 ″) ». Продолжая работать с Sheet1 в Book1.xlsm, полная ссылка будет следующей: Application.Workbooks ("Книга1.xlsm "). Таблицы (" Sheet1 "). Диапазон (" A1: B5 ")
Вы можете обратиться к такому диапазону, набрав «Диапазон (« A1: B5, D1: D5 ″) ». В этом случае полностью квалифицированная ссылка выглядит следующим образом: Приложение.Рабочие тетради ("Book1.xlsm"). Рабочие листы ("Sheet1"). Диапазон ("A1: B5, D1: D5")
В этом случае соответствующий синтаксис — «Диапазон (« B1: B10 A5: C5 ″) ». При работе с Sheet1 Book1.xlsm полная ссылка может быть построена следующим образом: Application.Workbooks ("Book1.xlsm"). Worksheets ("Sheet1"). Range ("B1: B10 A5: C5")
Я могу затронуть тему работы с объединенными ячейками в будущих уроках. На данный момент я объясню, как ссылаться на объединенные ячейки с помощью свойства Range. Это должно помочь вам избежать некоторых из наиболее распространенных ошибок при работе с объединенными ячейками. Первое, что следует учитывать при обращении к объединенным ячейкам, это то, что вы можете ссылаться на них одним из следующих двух способов :
Предположим, вы работаете с таблицей Excel, в которой объединены диапазоны ячеек от A1 до C5. Сюда входят ячейки A1, A2, A3, A4, A5, B1, B2, B3, B4, B5, C1, C2, C3, C4 и C5. В этом случае подходящий синтаксис может быть одним из следующих:
В обоих случаях результат одинаковый. Вы должны быть особенно осторожны, пытаясь присвоить значения объединенным ячейкам. Как правило, вы можете выполнить эту операцию, только присвоив значение левой верхней ячейке диапазона (ячейка A1 в приведенном выше примере). В противном случае Excel VBA (обычно) не работает:
Как обратиться к объекту диапазона VBA с помощью ярлыков для свойства диапазонаСсылки на объект Excel VBA Range с использованием свойства Range можно сделать короче с помощью квадратных скобок ([]). Вы можете использовать этот ярлык следующим образом:
Давайте посмотрим, как это выглядит на практике, применив ярлык к различным случаям и примерам, показанным и объясненным в разделах выше. Ярлык №1: обращение к отдельной ячейкеВместо того, чтобы вводить «Диапазон (« Ячейка »)», как описано выше, введите «[Ячейка]». Например, если вы ссылаетесь на ячейку A1, используйте «[A1]». Полная ссылка на ячейку A1 в Sheet1 Book1.xlsm выглядит следующим образом: Application.Workbooks ("Book1.xlsm"). Worksheets ("Sheet1"). [A1]
Например, если вы ссылаетесь на первую строку (строка 1) или первый столбец (столбец A) листа Excel, синтаксис выглядит следующим образом:
И полные ссылки, предполагающие, что вы работаете с Sheet1 из Book1.xlsm, следующие: Application.Workbooks ("Book1.xlsm"). Worksheets ("Sheet1").[1: 1] Application.Workbooks ("Book1.xlsm"). Worksheets ("Sheet1"). [A: A]
Синтаксис ссылки в квадратных скобках: «[A1: B5, D1: D5]». Полный код ссылки выглядит следующим образом: Application.Workbooks ("Book1.xlsm"). Worksheets ("Sheet1"). [A1: B5, D1: D5]
Вы можете создать ссылку, используя следующие квадратные скобки: «[B1: B10 A5: C5]». При работе с Sheet1 из Book1.xlsm полная ссылка: Application.Workbooks ("Book1.xlsm"). Worksheets ("Sheet1").[B1: B10 A5: C5]
Это важно, потому что в зависимости от контекста свойства могут возвращать разные ячейки. Точнее, , применяя свойство Cells к объекту Range, вы ссылаетесь на ячейку по отношению к другому диапазону . Я согласен, это, наверное, сбивает с толку. Не волнуйтесь, объяснение и примеры, приведенные ниже, проясняют эту тему. Важно помнить, что свойство Cells позволяет ссылаться на диапазон ячеек. Поскольку основная логика обоих свойств (Worksheet.Cells и Range.Cells), я рассматриваю оба одновременно. Существует несколько способов использования свойства Cells для ссылки на объект Range. Я объясню основные методы этого в следующих разделах. Синтаксис свойства ячеекБазовый синтаксис свойства Cells — «expression.Cells (Row_Number, Column_Number)» , где:
Одно из основных различий между свойствами Range и Cells заключается в том, что свойство Cells принимает номера строк и столбцов в качестве аргументов. Вы можете увидеть это в синтаксисе, описанном выше. Есть дополнительные возможные способы реализации свойства Cells. Однако они второстепенные, и я объясню их ниже. Объект Range имеет свойство, называемое свойством Range.Item, которое я объясню ниже. Причина, по которой вы можете указать аргументы Row_Number и Column_Number сразу после ключевого слова Cells, заключается в том, что Range.Свойство Item является свойством по умолчанию для объекта Range . По той же причине, как объяснено выше, вы также можете использовать букву, заключенную в двойные кавычки («»), для ссылки на столбец. Если вы хотите понять взаимосвязь между свойством Range.Item и свойством Cells, обратитесь к соответствующему разделу ниже. А пока давайте вернемся к некоторым диапазонам VBA, которые использовались в предыдущих примерах, и посмотрим, как ссылаться на них с помощью свойства Cells. Как сослаться на отдельную ячейку с помощью свойства Worksheet.CellsСамый простой вариант использования свойства Cells относится к отдельной ячейке. Тот факт, что свойство Cells может использоваться (обычно) только для целей возврата диапазона из 1 ячейки , является одной из основных характеристик, отличающих Cells от свойства Range. Фактически существует способ использовать свойство Cells для ссылки на более крупные диапазоны ячеек .Однако это включает в себя объединение свойств Range и Cells. Я объясню этот метод ниже. Обращение к отдельной ячейке с помощью свойства Cells относительно просто. Например, если вы хотите сослаться на ячейку A1 в Sheet1 Book1.xlsm, полная ссылка в значительной степени соответствует тому, что вы ожидаете, учитывая базовый синтаксис, показанный в предыдущем разделе: Application.Workbooks ("Book1.xlsm"). Worksheets ("Sheet1"). Cells (1, 1) Application.Workbooks ("Book1.xlsm").Рабочие листы («Лист1»). Ячейки (1, «А»)
Следующий снимок экрана дает вам представление о том, как происходит присвоение номера: Например, если вы хотите обратиться к ячейке A2, используя этот синтаксис, подходящей ссылкой будет «Ячейки (16385)». Полная ссылка на ячейку A2 в Sheet1 Book1.xlsm выглядит следующим образом: Application.Workbooks ("Book1.xlsm"). Worksheets ("Sheet1"). Cells (16385)
Например, предположим, что вы работаете с диапазоном ячеек от A1 до B10 и хотите выбрать ячейку A5. В данном случае ссылка — «Диапазон (« A1: B10 ″). Ячейки (9) ».На следующем снимке экрана показано, как номера Cell_Index назначаются ячейкам в соответствующем диапазоне: Полная ссылка при работе с Sheet1 из Book1.xlsm выглядит следующим образом: Приложение.Рабочие книги ("Book1.xlsm"). Рабочие листы ("Sheet1"). Диапазон ("A1: B10"). Ячейки (9)
Синтаксис свойства Range.Offset отражает эти 3 элемента. Этот синтаксис : «expression.Offset (Row_Offset, Column_Offset)» , где:
Оба аргумента Row_Offset и Column_Offset несут смещение от верхней левой ячейки объекта диапазона VBA, представленного выражением. Способ работы свойства Offset означает, что его можно применить только к объекту Range . Другими словами, рабочего листа нет.Смещение собственности. Это означает, что это свойство является отличной альтернативой для целей ссылки на конкретную ячейку по отношению к диапазону без использования более сложных методов, которые я объяснил выше, а именно применения свойств Range или Cells к объекту Range. Давайте рассмотрим несколько примеров использования свойства Range.Offset для ссылки на объект Range VBA: Как сослаться на отдельную ячейку с помощью свойства Range.OffsetВ простейшем случае можно использовать Range.Смещение для ссылки на отдельную ячейку: Application.Workbooks ("Book1.xlsm"). Worksheets ("Sheet1"). Range ("A1"). Offset (RowOffset: = 1, ColumnOffset: = 1)
Как следствие вышесказанного, инструкция возвращает диапазон от ячеек D4 до E8 (D4, D5, D6, D7, D8, E4, E5, E6, E7 и E8). Почему вам следует научиться использовать свойство Range.Offset для ссылки на объект диапазона Excel VBAСвойство Range.Offset (обычно) наиболее полезно , когда:
Свойство Range.Offset также обычно используется средством записи макросов при использовании относительных ссылок при записи макроса . Таким образом, вы можете ожидать постоянно сталкиваться с этим типом ссылочной структуры при работе с макросами и Visual Basic для приложений. Как обратиться к объекту диапазона VBA с помощью свойства Range.ItemПо причинам, которые я объясню в конце этого раздела, вы не можете в конечном итоге слишком часто использовать свойство Range.Item в своей повседневной работе с Excel .Однако вам все равно может понадобиться время от времени использовать это свойство. Кроме того, , имеющий хорошее представление о свойстве Range.Item, может помочь лучше понять свойство Cells, которое я описал выше, и понять его синтаксис. Как и некоторые другие свойства, обсуждаемые в этом руководстве по VBA, свойство Range.Item возвращает объект. Объект — это диапазон. В данном конкретном случае диапазон определяется, начиная с определенного указанного диапазона.Затем свойство Range.Item обращается к определенной ячейке в этом диапазоне на основе используемых вами аргументов. Синтаксис свойства Range.Item очень похож на синтаксис других свойств, описанных в этом руководстве по VBA: «expression.Item (Row_Index, Column_Index)» . В этом случае «выражение» — это переменная, представляющая объект Range. Обратите внимание, однако, что в случае свойства Range.Item я имею в виду «Row_Index» и «Column_Index». В случае большинства других свойств, рассмотренных в этом руководстве по VBA, аргументы ссылались либо на числа (например, «Row_Number»), либо на буквы (например, «Column_Letter»). Единственный другой раз, когда я использую слово index для описания аргументов свойства, — это когда я объясняю альтернативный синтаксис для ссылки на одну ячейку с помощью свойства Cells. Причина, по которой свойство Range.Item использует индекс для идентификации как строки, так и столбца, заключается в том, что поведение аргумента Row_Index очень похоже на поведение аргумента Cell_Index в этом случае использования свойства Cells. Давайте подробнее рассмотрим этот аргумент Row_Index.Основные характеристики этого аргумента следующие:
Другой аргумент свойства Range.Item (Column_Index) ведет себя несколько иначе . Ниже приведены его основные характеристики:
Оба аргумента являются относительными смещениями. Visual Basic для приложений использует эти аргументы, чтобы определить, сколько строк и столбцов нужно отодвинуть от первоначально указанного диапазона . Я объясняю (выше), как при применении к объекту Range свойство Cells не ограничивается количеством ячеек в указанном диапазоне. Другими словами, вы, , можете использовать свойство Cells для ссылки на ячейки за пределами этого диапазона . У то же самое происходит с Range.Объект собственность. Прочитав о других свойствах выше, вы, вероятно, имеете хорошее представление о том, что делает свойство Range.Item. Тем не менее, давайте взглянем на пару примеров. Например, все следующие операторы возвращают ячейку A1 листа Sheet1 в Book1.xlsm: Application.Workbooks ("Book1.xlsm"). Worksheets ("Sheet1"). Range ("A1: D10"). Cells.Item (1) Application.Workbooks ("Book1.xlsm"). Worksheets ("Sheet1"). Range ("A1: D10"). Cells.Item (1, 1) Заявление.Рабочие книги ("Book1.xlsm"). Рабочие листы ("Sheet1"). Диапазон ("A1: D10"). Cells.Item (1, "A")
ЗаключениеОбъект Range — один из наиболее важных и часто используемых объектов Excel VBA. К сожалению, тема объекта Excel VBA Range иногда может сбивать с толку некоторых пользователей. Одна из основных причин этого заключается в том, что существует несколько различных способов ссылки на объект Range. Это руководство по VBA представляет собой краткое введение в тему объекта Excel VBA Range. Возможно, что более важно, в этом посте объясняются и показаны некоторые из наиболее распространенных методов создания соответствующих ссылок на объект Range. Теперь, когда вы прочитали этот пост, вы, вероятно, хорошо понимаете объект Excel VBA Range и вас не смущают различные альтернативы, которые вы можете использовать для ссылки на него. В частности, вы, вероятно, теперь являетесь экспертом в том, что касается создания ссылок на объекты Range с использованием любого из следующих свойств:
Есть еще несколько других способов ссылаться на объекты Excel VBA Range и манипулировать ими.Некоторые из них — это метод Application.Union и свойство Range.Areas. ссылок VBA — добавить и удалитьВ этом модуле — как программно:
0. Справочные документы VBAСправочный список VBA (рис. 1) доступен через последовательность меню VBE.Список доступных ссылок отображает каждый элемент ссылки по его свойству description в порядке приоритета. Рис. 1. Ссылки — VBAProject — с девятью выбранными ссылками, идентифицированными свойством описания и отображаемым всплывающим окном пути. Ссылки также являются частью раскрывающегося списка библиотек в обозревателе объектов (рисунок 2). Каждый выбранный элемент списка ссылок отображается своим свойством name в алфавитном порядке в обозревателе объектов . Рис. 2: Ссылки — Библиотека обозревателя объектов — с девятью ссылками, перечисленными в алфавитном порядке свойства Имя 1. Ссылки VBA — СписокКод 1 использует объект ссылки и связанную с ним коллекцию ссылок для печати списка доступные ссылки. Для этого кода требуется справочник Microsoft Visual Basic for Applications Extensibility 5.3 . Код 1: макрос Sub xlfVBEListReferences () 'Требуются ссылки :: Microsoft Visual Basic для расширения приложений 5.3 'C: \ Program Files (x86) \ Common Files \ Microsoft Shared \ VBA \ VBA6 \ VBE6EXT.OLB Dim oRef как VBIDE.Reference 'Item Dim oRefs как VBIDE.Сборник ссылок Dim i как целое число Установите oRefs = Application.VBE.ActiveVBProject.References Debug.Print "Время печати:" & Время & ":: Элемент - Имя и описание" Для каждого oRef в oRefs я = я + 1 Debug.Print "Item" & i, oRef.Name, oRef.Description Следующий oRef Debug.Print vbNewLine я = 0 Отлаживать.Распечатать "Время печати:" & Время & ":: Элемент - Полный путь" Для каждого oRef в oRefs я = я + 1 Debug.Print "Item" & i, oRef.FullPath Следующий oRef Debug.Print vbNewLine я = 0 'Перечислите глобальный уникальный идентификатор (GUID) для каждой библиотеки, на которую имеется ссылка в текущем проекте. Debug.Print "Время печати:" & Время & ":: Элемент - GUID" Для каждого oRef в oRefs я = я + 1 Debug.Print "Item" & i, oRef.GUID Следующий oRef Отлаживать.Печать vbNewLine Конец подписки О Коде 1
Рис. 3: Окно непосредственного доступа — с отладкой. Печать текста для свойств имени и описания, полного пути и GUID. Справочные объекты, элементы 1 и 9, развернуты в представлении Окно локальных переменных на рис. 4 как объект oRefs из код 1. Рис. 4: Окно локальных переменных — элементы oRef — расширенный вид для элементов 1 и 9 2.Ссылки VBA — ДобавитьЭлементы ссылки могут быть созданы в коллекции ссылок с помощью методов AddFromFile (код 2a) или AddFromGuid (код 2b). Код 2a: макрос Sub xlfVBEAddReferences () Dim oRefs как ссылки Установите oRefs = Application.VBE.ActiveVBProject.References При ошибке GoTo OnError oRefs.AddFromFile "C: \ Windows \ System32 \ msxml6.dll " OnError: Конец подписки Код 2b: макрос Sub xlfVBEAddReferencesGUID () Dim oRefs как ссылки Установите oRefs = Application.VBE.ActiveVBProject.References При ошибке GoTo OnError 'Синтаксис: AddFromGuid (Guid, Major, Minor) 'Основной номер версии справки. 'Дополнительный номер версии справки. 'Microsoft XML, v6.0 :: Major - 6, Minor - 0 oRefs.AddFromGuid "{F5078F18-C551-11D3-89B9-0000F81FE221}", 6, 0 OnError: Конец подписки 3. Ссылки VBA — УдалитьЧтобы удалить элемент из коллекции, выполните цикл с помощью For Each … Next и определите конкретные объекты по имени (код 3a) или Описание (код 3b) затем Удалить. Код 3a: макрос Sub xlfVBERemoveReference1 () Dim oRef как ссылка Dim oRefs как ссылки Установите oRefs = Application.VBE.ActiveVBProject.References Для каждого oRef в oRefs Если oRef.Name = "MSXML2" Тогда oRefs.Remove oRef Выход для Конец, если Следующий oRef Конец подписки Код 3b: макрос Sub xlfVBERemoveReference2 () Dim oRef как ссылка Dim oRefs как ссылки Установите oRefs = Application.VBE.ActiveVBProject.References Для каждого oRef в oRefs Если oRef.Description = "Microsoft XML, v6.0 "Тогда oRefs.Remove oRef Выход для Конец, если Следующий oRef Конец подписки
|