Объекты Excel — ОфисГуру
Автор Антон Андронов На чтение 10 мин Опубликовано
Термин Объекты Excel (понимаемый в широком смысле, как объектная модель Excel) включает в себя элементы, из которых состоит любая рабочая книга Excel. Это, например, рабочие листы (Worksheets), строки (Rows), столбцы (Columns), диапазоны ячеек (Ranges) и сама рабочая книга Excel (Workbook) в том числе. Каждый объект Excel имеет набор свойств, которые являются его неотъемлемой частью.
Например, объект Worksheet (рабочий лист) имеет свойства Name (имя), Protection (защита), Visible (видимость), Scroll Area (область прокрутки) и так далее. Таким образом, если в процессе выполнения макроса требуется скрыть рабочий лист, то достаточно изменить свойство
В Excel VBA существует особый тип объектов – коллекция. Как можно догадаться из названия, коллекция ссылается на группу (или коллекцию) объектов Excel. Например, коллекция Rows – это объект, содержащий все строки рабочего листа.
Доступ ко всем основным объектам Excel может быть осуществлён (прямо или косвенно) через объект Workbooks, который является коллекцией всех открытых в данный момент рабочих книг. Каждая рабочая книга содержит объект Sheets – коллекция, которая включает в себя все рабочие листы и листы с диаграммами рабочей книги. Каждый объект Worksheet состоит из коллекции Rows – в неё входят все строки рабочего листа, и коллекции Columns – все столбцы рабочего листа, и так далее.
В следующей таблице перечислены некоторые наиболее часто используемые объекты Excel. Полный перечень объектов Excel VBA можно найти на сайте Microsoft Office Developer (на английском).
Объект | Описание |
---|---|
Application | Приложение Excel. |
Workbooks | Коллекция всех открытых в данный момент рабочих книг в текущем приложении Excel. Доступ к какой-то конкретной рабочей книге может быть осуществлён через объект Workbooks при помощи числового индекса рабочей книги или её имени, например, Workbooks(1) или Workbooks(«Книга1»). |
Workbook | Объект Workbook – это рабочая книга. Доступ к ней может быть выполнен через коллекцию Workbooks при помощи числового индекса или имени рабочей книги (см. выше). Для доступа к активной в данный момент рабочей книге можно использовать Из объекта Workbook можно получить доступ к объекту Sheets, который является коллекцией всех листов рабочей книги (рабочие листы и диаграммы), а также к объекту Worksheets, который представляет из себя коллекцию всех рабочих листов книги Excel. |
Sheets | Объект Sheets– это коллекция всех листов рабочей книги. Это могут быть как рабочие листы, так и диаграммы на отдельном листе. Доступ к отдельному листу из коллекции Sheets можно получить при помощи числового индекса листа или его имени, например, Sheets(1) или Sheets(«Лист1»). |
Worksheets | Объект Worksheets – это коллекция всех рабочих листов в рабочей книге (то есть, все листы, кроме диаграмм на отдельном листе). Доступ к отдельному рабочему листу из коллекции Worksheets можно получить при помощи числового индекса рабочего листа или его имени, например, Worksheets(1) или Worksheets(«Лист1»). |
Worksheet | Объект Worksheet – это отдельный рабочий лист книги Excel. Доступ к нему можно получить при помощи числового индекса рабочего листа или его имени (см. выше). Кроме этого Вы можете использовать ActiveSheet для доступа к активному в данный момент рабочему листу. Из объекта Worksheet можно получить доступ к объектам Rows и Columns, которые являются коллекцией объектов Range, ссылающихся на строки и столбцы рабочего листа. А также можно получить доступ к отдельной ячейке или к любому диапазону смежных ячеек на рабочем листе. |
Rows | Объект Rows – это коллекция всех строк рабочего листа. Объект Range, состоящий из отдельной строки рабочего листа, может быть доступен по номеру этой строки, например, Rows(1). |
Columns | Объект Columns – это коллекция всех столбцов рабочего листа. Объект Range, состоящий из отдельного столбца рабочего листа, может быть доступен по номеру этого столбца, например, Columns(1). |
Range | Объект Range – это любое количество смежных ячеек на рабочем листе. Это может быть одна ячейка или все ячейки листа. Доступ к диапазону, состоящему из единственной ячейки, может быть осуществлён через объект Worksheet при помощи свойства Cells, например, Worksheet.Cells(1,1). По-другому ссылку на диапазон можно записать, указав адреса начальной и конечной ячеек. Их можно записать через двоеточие или через запятую. Например, Worksheet.Range(«A1:B10») или Worksheet.Range(«A1», «B10») или Worksheet.Range(Cells(1,1), Cells(10,2)). Обратите внимание, если в адресе Range вторая ячейка не указана (например, Worksheet.Range(«A1») или Worksheet.Range(Cells(1,1)), то будет выбран диапазон, состоящий из единственной ячейки. |
Приведённая выше таблица показывает, как выполняется доступ к объектам Excel через родительские объекты. Например, ссылку на диапазон ячеек можно записать вот так:
Workbooks("Книга1").Worksheets("Лист1").Range("A1:B10")
Содержание
Присваивание объекта переменной- Активный объект
- Смена активного объекта
- Свойства объектов
- Методы объектов
- Рассмотрим несколько примеров
- Пример 1
- Пример 2
- Пример 3
Присваивание объекта переменной
В Excel VBA объект может быть присвоен переменной при помощи ключевого слова Set:
Dim DataWb As Workbook Set DataWb = Workbooks("Книга1.xlsx")
Активный объект
В любой момент времени в Excel есть активный объект Workbook – это рабочая книга, открытая в этот момент. Точно так же существует активный объект Worksheet, активный объект Range и так далее.
Сослаться на активный объект Workbook или Sheet в коде VBA можно как на ActiveWorkbook или ActiveSheet, а на активный объект Range – как на Selection.
Если в коде VBA записана ссылка на рабочий лист, без указания к какой именно рабочей книге он относится, то Excel по умолчанию обращается к активной рабочей книге. Точно так же, если сослаться на диапазон, не указывая определённую рабочую книгу или лист, то Excel по умолчанию обратится к активному рабочему листу в активной рабочей книге.
Таким образом, чтобы сослаться на диапазон A1:B10 на активном рабочем листе активной книги, можно записать просто:
Range("A1:B10")
Смена активного объекта
Если в процессе выполнения программы требуется сделать активной другую рабочую книгу, другой рабочий лист, диапазон и так далее, то для этого нужно использовать методы Activate или Select вот таким образом:
Sub ActivateAndSelect() Workbooks("Книга2").Activate Worksheets("Лист2").Select Worksheets("Лист2").Range("A1:B10").Select Worksheets("Лист2").Range("A5").Activate End Sub
Методы объектов, в том числе использованные только что методы Activate
или Select, далее будут рассмотрены более подробно.Свойства объектов
Каждый объект VBA имеет заданные для него свойства. Например, объект Workbook имеет свойства Name (имя), RevisionNumber (количество сохранений), Sheets (листы) и множество других. Чтобы получить доступ к свойствам объекта, нужно записать имя объекта, затем точку и далее имя свойства. Например, имя активной рабочей книги может быть доступно вот так: ActiveWorkbook.Name. Таким образом, чтобы присвоить переменной wbName имя активной рабочей книги, можно использовать вот такой код:
Dim wbName As String wbName = ActiveWorkbook.Name
Ранее мы показали, как объект Workbook может быть использован для доступа к объекту Worksheet при помощи такой команды:
Workbooks("Книга1").Worksheets("Лист1")
Это возможно потому, что коллекция Worksheets является свойством объекта Workbook.
Некоторые свойства объекта доступны только для чтения, то есть их значения пользователь изменять не может. В то же время существуют свойства, которым можно присваивать различные значения. Например, чтобы изменить название активного листа на «Мой рабочий лист«, достаточно присвоить это имя свойству Name активного листа, вот так:
ActiveSheet.Name = "Мой рабочий лист"
Методы объектов
Объекты VBA имеют методы для выполнения определённых действий. Методы объекта – это процедуры, привязанные к объектам определённого типа. Например, объект Workbook имеет методы Activate, Close, Save и ещё множество других.
Для того, чтобы вызвать метод объекта, нужно записать имя объекта, точку и имя метода. Например, чтобы сохранить активную рабочую книгу, можно использовать вот такую строку кода:
ActiveWorkbook.Save
Как и другие процедуры, методы могут иметь аргументы, которые передаются методу при его вызове. Например, метод Close объекта Workbook имеет три необязательных аргумента, которые определяют, должна ли быть сохранена рабочая книга перед закрытием и тому подобное.
Чтобы передать методу аргументы, необходимо записать после вызова метода значения этих аргументов через запятую. Например, если нужно сохранить активную рабочую книгу как файл .csv с именем «Книга2», то нужно вызвать метод SaveAs объекта Workbook и передать аргументу Filename значение Книга2, а аргументу FileFormat – значение xlCSV:
ActiveWorkbook.SaveAs "Книга2", xlCSV
Чтобы сделать код более читаемым, при вызове метода можно использовать именованные аргументы. В этом случае сначала записывают имя аргумента, затем оператор присваивания «:=» и после него указывают значение. Таким образом, приведённый выше пример вызова метода SaveAs объекта Workbook можно записать по-другому:
ActiveWorkbook. SaveAs Filename:="Книга2", [FileFormat]:=xlCSV
В окне Object Browser редактора Visual Basic показан список всех доступных объектов, их свойств и методов. Чтобы открыть этот список, запустите редактор Visual Basic и нажмите F2.
Рассмотрим несколько примеров
Пример 1
Этот отрывок кода VBA может служить иллюстрацией использования цикла For Each. В данном случае мы обратимся к нему, чтобы продемонстрировать ссылки на объект Worksheets (который по умолчанию берётся из активной рабочей книги) и ссылки на каждый объект Worksheet отдельно. Обратите внимание, что для вывода на экран имени каждого рабочего листа использовано свойство Name объекта Worksheet.
'Пролистываем поочерёдно все рабочие листы активной рабочей книги 'и выводим окно сообщения с именем каждого рабочего листа Dim wSheet As Worksheet For Each wSheet in Worksheets MsgBox "Найден рабочий лист: " & wSheet. Name Next wSheet
Пример 2
В этом примере кода VBA показано, как можно получать доступ к рабочим листам и диапазонам ячеек из других рабочих книг. Кроме этого, Вы убедитесь, что если не указана ссылка на какой-то определённый объект, то по умолчанию используются активные объекты Excel. Данный пример демонстрирует использование ключевого слова Set для присваивания объекта переменной.
'Копируем диапазон ячеек из листа "Лист1" другой рабочей книги (с именем Data.xlsx) 'и вставляем только значения на лист "Результаты" текущей рабочей книги (с именем CurrWb.xlsm) Dim dataWb As Workbook Set dataWb = Workbooks.Open("C:\Data") 'Обратите внимание, что DataWb – это активная рабочая книга. 'Следовательно, следующее действие выполняется с объектом Sheets в DataWb. Sheets("Лист1").Range("A1:B10").Copy 'Вставляем значения, скопированные из диапазона ячеек, на рабочий лист "Результаты" 'текущей рабочей книги. Обратите внимание, что рабочая книга CurrWb.xlsm не является 'активной, поэтому должна быть указана в ссылке. Workbooks("CurrWb").Sheets("Результаты").Range("A1").PasteSpecial Paste:=xlPasteValues
Пример 3
Следующий отрывок кода VBA показывает пример объекта (коллекции) Columns и демонстрирует, как доступ к нему осуществляется из объекта Worksheet. Кроме этого, Вы увидите, что, ссылаясь на ячейку или диапазон ячеек на активном рабочем листе, можно не указывать этот лист в ссылке. Вновь встречаем ключевое слово Set, при помощи которого объект Range присваивается переменной Col.
Данный код VBA показывает также пример доступа к свойству Value объекта Range и изменение его значения.
'С помощью цикла просматриваем значения в столбце A на листе "Лист2", 'выполняем с каждым из них арифметические операции и записываем результат 'в столбец A активного рабочего листа (Лист1) Dim i As Integer Dim Col As Range Dim dVal As Double 'Присваиваем переменной Col столбец A рабочего листа "Лист2" Set Col = Sheets("Лист2").Columns("A") i = 1 'Просматриваем последовательно все ячейки столбца Col до тех пор 'пока не встретится пустая ячейка Do Until IsEmpty(Col.Cells(i)) 'Выполняем арифметические операции со значением текущей ячейки dVal = Col.Cells(i).Value * 3 - 1 'Следующая команда записывает результат в столбец A 'активного листа. Нет необходимости указывать в ссылке имя листа, 'так как это активный лист рабочей книги. Cells(i, 1).Value = dVal i = i + 1 Loop
Урок подготовлен для Вас командой сайта office-guru. ru
Источник: http://www.excelfunctions.net/Excel-Objects.html
Перевел: Антон Андронов
Правила перепечатки
Еще больше уроков по Microsoft Excel
Оцените качество статьи. Нам важно ваше мнение:
Примеры макросов Excel — ОфисГуру
Главная » Уроки MS Excel » Макросы (VBA)
Автор Антон Андронов На чтение 6 мин Опубликовано
Следующие простые примеры макросов Excel иллюстрируют некоторые возможности и приёмы, описанные в самоучителе по Excel VBA.
Содержание
- Макрос Excel: пример 1
- Макрос Excel: пример 2
- Макрос Excel: пример 3
- Макрос Excel: пример 4
- Макрос Excel: пример 5
- Макрос Excel: пример 6
Макрос Excel: пример 1
Первоначально эта процедура Sub была приведена, как пример использования комментариев в коде VBA. Однако, здесь также можно увидеть, как объявляются переменные, как работают ссылки на ячейки Excel, использование цикла For, условного оператора If и вывод на экран окна сообщения.
'Процедура Sub выполняет поиск ячейки, содержащей заданную строку 'в диапазоне ячеек A1:A100 активного листа Sub Find_String(sFindText As String) Dim i As Integer 'Целое число типа Integer, используется в цикле For Dim iRowNumber As Integer 'Целое число типа Integer для хранения результата iRowNumber = 0 'Просматривает одну за другой ячейки A1:A100 до тех пор, пока не будет найдена строка sFindText For i = 1 To 100 If Cells(i, 1).Value = sFindText Then 'Если совпадение с заданной строкой найдено 'сохраняем номер текущей строки и выходим из цикла For iRowNumber = i Exit For End If Next i 'Сообщаем пользователю во всплывающем окне найдена ли искомая строка 'Если заданная строка найдена, указываем в какой ячейке найдено совпадение If iRowNumber = 0 Then MsgBox "Строка " & sFindText & " не найдена" Else MsgBox "Строка " & sFindText & " найдена в ячейке A" & iRowNumber End If End Sub
Макрос Excel: пример 2
Следующая процедура Sub – пример использования цикла Do While. Здесь также можно увидеть, как объявляются переменные, работу со ссылками на ячейки Excel и применение условного оператора If.
'Процедура Sub выводит числа Фибоначчи, не превышающие 1000 Sub Fibonacci() Dim i As Integer 'Счётчик для обозначения позиции элемента в последовательности Dim iFib As Integer 'Хранит текущее значение последовательности Dim iFib_Next As Integer 'Хранит следующее значение последовательности Dim iStep As Integer 'Хранит размер следующего приращения 'Инициализируем переменные i и iFib_Next i = 1 iFib_Next = 0 'Цикл Do While будет выполняться до тех пор, пока значение 'текущего числа Фибоначчи не превысит 1000 Do While iFib_Next < 1000 If i = 1 Then 'Особый случай для первого элемента последовательности iStep = 1 iFib = 0 Else 'Сохраняем размер следующего приращения перед тем, как перезаписать 'текущее значение последовательности iStep = iFib iFib = iFib_Next End If 'Выводим текущее число Фибоначчи в столбце A активного рабочего листа 'в строке с индексом i Cells(i, 1). Value = iFib 'Вычисляем следующее число Фибоначчи и увеличиваем индекс позиции элемента на 1 iFib_Next = iFib + iStep i = i + 1 Loop End Sub
Макрос Excel: пример 3
Эта процедура Sub просматривает ячейки столбца A активного листа до тех пор, пока не встретит пустую ячейку. Значения записываются в массив. Этот простой макрос Excel показывает работу с динамическими массивами, а также использование цикла Do Until. В данном примере мы не будет совершать какие-либо действия с массивом, хотя в реальной практике программирования после того, как данные записаны в массив, над ними такие действия, как правило, совершаются.
'Процедура Sub сохраняет значения ячеек столбца A активного листа в массиве Sub GetCellValues() Dim iRow As Integer 'Хранит номер текущей строки Dim dCellValues() As Double 'Массив для хранения значений ячеек iRow = 1 ReDim dCellValues(1 To 10) 'Цикл Do Until перебирает последовательно ячейки столбца A активного листа 'и извлекает их значения в массив до тех пор, пока не встретится пустая ячейка Do Until IsEmpty(Cells(iRow, 1)) 'Проверяем, что массив dCellValues имеет достаточный размер 'Если нет – увеличиваем размер массива на 10 при помощи ReDim If UBound(dCellValues) < iRow Then ReDim Preserve dCellValues(1 To iRow + 9) End If 'Сохраняем значение текущей ячейки в массиве dCellValues dCellValues(iRow) = Cells(iRow, 1). Value iRow = iRow + 1 Loop End Sub
Макрос Excel: пример 4
В этом примере процедура Sub считывает значения из столбца A рабочего листа Лист2 и выполняет с ними арифметические операции. Результаты заносятся в ячейки столбца A на активном рабочем листе. В этом макросе продемонстрировано использование объектов Excel. В частности, производится обращение процедурой Sub к объекту Columns, и показано, как доступ к этому объекту осуществляется через объект Worksheet. Показано так же, что при обращении к ячейке или диапазону ячеек на активном листе, имя этого листа при записи ссылки указывать не обязательно.
'Процедура Sub при помощи цикла считывает значения в столбце A рабочего листа Лист2, 'выполняет с каждым значением арифметические операции и записывает результат в 'столбец A активного рабочего листа (Лист1) Sub Transfer_ColA() Dim i As Integer Dim Col As Range Dim dVal As Double 'Присваиваем переменной Col столбец A рабочего листа Лист 2 Set Col = Sheets("Лист2"). Columns("A") i = 1 'При помощи цикла считываем значения ячеек столбца Col до тех пор, 'пока не встретится пустая ячейка Do Until IsEmpty(Col.Cells(i)) 'Выполняем арифметические операции над значением текущей ячейки dVal = Col.Cells(i).Value * 3 - 1 'Следующая команда записывает полученный результат в столбец A активного рабочего листа 'Имя листа в ссылке указывать нет необходимости, так как это активный лист. Cells(i, 1) = dVal i = i + 1 Loop End Sub
Макрос Excel: пример 5
Данный макрос показывает пример кода VBA, отслеживающего событие Excel. Событие, к которому привязан макрос, происходит каждый раз при выделении ячейки или диапазона ячеек на рабочем листе. В нашем случае при выделении ячейки B1, на экран выводится окно с сообщением.
'Данный код показывает окно с сообщением, если на текущем рабочем листе 'выбрана ячейка B1 Private Sub Worksheet_SelectionChange(ByVal Target As Range) 'Проверяем выбрана ли ячейка B1 If Target. Count = 1 And Target.Row = 1 And Target.Column = 2 Then 'Если ячейка B1 выбрана, выполняем необходимое действие MsgBox "Вы выбрали ячейку B1" End If End Sub
Макрос Excel: пример 6
На примере этой процедуры показано использование операторов On Error и Resume для обработки ошибок. В данном коде также показан пример открытия и чтения данных из файла.
'Процедура Sub присваивает аргументам Val1 и Val2 значения ячеек A1 и B1 'из рабочей книги Data.xlsx, находящейся в папке C:\Documents and Settings Sub Set_Values(Val1 As Double, Val2 As Double) Dim DataWorkbook As Workbook On Error GoTo ErrorHandling 'Открываем рабочую книгу с данными Set DataWorkbook = Workbooks.Open("C:\Documents and Settings\Data") 'Присваиваем переменным Val1 и Val2 значения из заданной рабочей книги Val1 = Sheets("Лист1"). Cells(1, 1) Val2 = Sheets("Лист1").Cells(1, 2) DataWorkbook.Close Exit Sub ErrorHandling: 'Если файл не найден, пользователю будет предложено поместить искомый файл 'в нужную папку и после этого продолжить выполнение макроса MsgBox "Файл Data.xlsx не найден! " & _ "Пожалуйста добавьте рабочую книгу в папку C:\Documents and Settings и нажмите OK" Resume End Sub
Урок подготовлен для Вас командой сайта office-guru.ru
Источник: http://www.excelfunctions.net/Excel-Macro-Example.html
Перевел: Антон Андронов
Правила перепечатки
Еще больше уроков по Microsoft Excel
Оцените качество статьи. Нам важно ваше мнение:
Учебное пособие по Excel VBA для начинающих: обучение за 3 дня
АвторSusan Gipson
ЧасыОбновлено
Учебное пособие по VBA Краткое содержание учебного пособия
Это учебное пособие по Excel VBA для начинающих содержит подробные уроки для изучения основ VBA Excel и VBA. Этот учебник по Visual Basic для приложений Excel охватывает все основы, а также расширенные концепции VBA для начинающих.
Что такое VBA?
VBA означает Visual Basic для приложений. Это сочетание языка программирования, управляемого событиями, Microsoft Visual Basic с приложениями Microsoft Office, такими как Microsoft Excel. VBA позволяет автоматизировать различные действия в Excel, такие как создание отчетов, подготовка диаграмм и графиков, выполнение расчетов и т. д. Это действие автоматизации также часто называют макросом. Таким образом, это помогает пользователям сэкономить время, затрачиваемое на выполнение повторяющихся шагов.
Программа Excel VBA
Введение
👉 Урок 1 | Учебное пособие по макросам Excel — Как писать макросы в Excel и использовать |
👉 Урок 2 | VBA в Excel — что такое Visual Basic для приложений, как использовать |
👉 Урок 3 | Переменные VBA, типы данных и объявления констант VBA — Определение и объяснение |
👉 Урок 4 | Массивы Excel VBA — что такое, как использовать и типы массивов в VBA |
Дополнительные материалы
👉 Урок 1 | Элементы управления VBA — Элементы управления формой VBA и элементы управления ActiveX в Excel |
👉 Урок 2 | Арифметические операторы VBA — Умножение, деление и сложение |
👉 Урок 3 | Строковые функции VBA — Строковые операторы VBA и функции управления |
👉 Урок 4 | Операторы сравнения VBA — не равно, меньше или равно |
👉 Урок 5 | Логические операторы VBA — И, ИЛИ, НЕ, ЕСЛИ НЕ в Excel VBA |
👉 Урок 6 | Подпрограмма Excel VBA — Как вызвать Sub в VBA на примере |
👉 Урок 7 | Учебное пособие по функциям Excel VBA — возврат, вызов, примеры |
👉 Урок 8 | Объект диапазона Excel VBA — что это такое, как использовать |
👉 Урок 9 | Парсинг веб-страниц с помощью VBA — Изучите основы парсинга веб-страниц |
Должен знать!
👉 Урок 1 | Вопросы для собеседования по VBA — Топ 22 вопросов и ответов для собеседования по VBA |
👉 Урок 2 | Учебное пособие по VBA в формате PDF — Загрузить Учебное пособие по программированию на VBA для Excel в формате PDF |
Зачем изучать Excel VBA?
Excel VBA позволяет использовать операторы, подобные английским, для написания инструкций по созданию различных приложений. Excel VBA прост в освоении и имеет простой в использовании пользовательский интерфейс, в котором вам просто нужно перетаскивать элементы управления интерфейсом. Это также позволяет вам улучшить функциональность Excel, заставив его вести себя так, как вы хотите.
Для чего используется VBA?
VBA используется как для личного, так и для коммерческого использования. Вы можете автоматизировать свои ежедневные рутинные задачи, используя простые макросы VBA для личного использования. Для использования в бизнесе вы можете создавать надежные программы и использовать возможности Excel в своих пользовательских программах с помощью VBA.
Предпосылки для изучения VBA Excel Tutorial?
Ничего! Это обучение Excel VBA предполагает, что вы абсолютный новичок в VBA. Однако желательно, чтобы вы знали основы Excel и то, как работают функции в Excel, это повысит вашу скорость обучения и понимания.
Что вы узнаете из этого руководства по Excel VBA?
В этом учебном пособии по Excel VBA вы изучите все основы VBA, такие как введение в макросы, типы данных VBA, переменные, массивы и т. д. Вы также изучите расширенные концепции Excel VBA, такие как управление формой VBA Excel, управление ActiveX , операторы VBA, подпрограммы, функции, объекты, просмотр веб-страниц с помощью VBA и многие другие интересные темы.
Вставка и запуск макросов VBA в Excel
Это краткое пошаговое руководство для начинающих, в котором показано, как добавить код VBA (код Visual Basic для приложений) в книгу Excel и запустить этот макрос для решения задач электронной таблицы.
Большинство таких людей, как я и вы, не являются настоящими гуру Microsoft Office. Таким образом, мы можем не знать всех особенностей вызова той или иной опции, и мы не можем сказать, чем отличается скорость выполнения VBA в разных версиях Excel. Мы используем Excel как инструмент для обработки наших прикладных данных.
Предположим, вам нужно каким-то образом изменить данные. Вы много гуглили и нашли макрос VBA, решающий вашу задачу. Однако ваши знания VBA оставляют желать лучшего. Не стесняйтесь изучать это пошаговое руководство, чтобы использовать найденный код:
Вставить код VBA в книгу Excel
В этом примере мы собираемся использовать макрос VBA для удаления разрывов строк с текущего рабочего листа.
- Откройте книгу в Excel.
- Нажмите Alt + F11, чтобы открыть редактор Visual Basic (VBE).
- Щелкните правой кнопкой мыши имя своей книги на панели « Project-VBAProject » (в верхнем левом углу окна редактора) и выберите Вставить -> Модуль из контекстного меню.
- Скопируйте код VBA (с веб-страницы и т. д.) и вставьте его в правую панель редактора VBA (окно « Module1 «).
- Совет: ускорьте выполнение макроса
Если код вашего макроса VBA не содержит в начале следующих строк:
Application.ScreenUpdating = False
Application.Calculation = xlCalculationManualЗатем добавьте следующие строки, чтобы ваш макрос работал быстрее (см. скриншоты выше):
- В самое начало кода, после всех строк кода, начинающихся с Dim (если нет строк « Dim «, то добавить их сразу после строки Sub ):
Application.ScreenUpdating = Ложь
Application.Calculation = xlCalculationManual - До самого кода, до End Sub :
Application.ScreenUpdating = True
Application.Calculation = xlCalculationAutomatic
Эти строки, как следует из их названий, отключают обновление экрана и пересчет формул рабочей книги перед запуском макроса.
После выполнения кода все снова включается. В результате производительность увеличивается с 10% до 500% (ага, макрос работает в 5 раз быстрее, если постоянно манипулировать содержимым ячеек).
- В самое начало кода, после всех строк кода, начинающихся с Dim (если нет строк « Dim «, то добавить их сразу после строки Sub ):
- Сохраните книгу как « Книга Excel с поддержкой макросов ».
Нажмите Crl + S, затем щелкните значок » № » кнопка в диалоговом окне предупреждения » Следующие функции не могут быть сохранены в рабочей книге без макросов «.