Excel Vba Программирование
- Язык Программирования Vba
- Эксель Это Просто
- Excel Vba Программирование
- Excel Vba Программирование Для Чайников
VBA широко используется в Excel, а также в Access, Word и других программах пакета. VBA - простой язык программирования, которому может научиться любой желающий. Изучив его, вы сможет предоставлять команды Excel, что делать с колонками, строками, значениями в ячейках, перемещать/добавлять/сортировать листы. Visual Basic for Applications (VBA, Visual Basic для приложений) — немного упрощенная реализация языка программирования Visual Basic, встроенная в линейку продуктов Microsoft Office (включая версии для Mac OS), а также во многие другие программные пакеты, такие как AutoCAD, SolidWorks, CorelDRAW, WordPerfect и ESRI ArcGIS. VBA покрывает и расширяет функциональность ранее использовавшихся специализированных макро-языков, таких как WordBasic. Программирование на vba эффектно и эффективно при создания решений для устранения.
Для начала в качестве примера рассмотрим простую процедуру VBA типа Sub. Она хранится в модуле VBA и вычисляет сумму первых ста положительных целых чисел. По окончании вычислений процедура отображает сообщение с результатом.
Sub VBADemo 'Пример простой процедуры VBA Dim Total As Long, i As Long Total = 0 For i = 1 To 100 Total = Total + i Next i MsgBox Total End Sub Скачать заметку в формате или В этой процедуре применяются некоторые популярные элементы языка:. комментарий (строка, начинающаяся апострофом);.
оператор объявления переменной (строка, начинающаяся ключевым словом Dim);. две переменные (Total и i);. два оператора присваивания (Total = 0 и Total = Total + i);. циклическая структура (For–Next);. функция VBA (MsgBox).
Комментарии Вы можете использовать для комментария новую строку либо вставить комментарий после инструкции в той же строке. В некоторых случаях нужно проверить процедуру, не вставляя в нее инструкцию либо даже целый набор инструкций. Вместо удаления соответствующей инструкции достаточно превратить ее в комментарий путем добавления апострофа в начале строки. После этого VBA проигнорирует инструкцию (или инструкции) при выполнении процедуры. Для преобразования комментария в инструкцию достаточно удалить знак апострофа. Переменные, типы данных и константы Переменная представляет собой именованное место хранения данных в памяти компьютера. Переменные могут содержать данные разных типов.
Вы можете использовать в названиях буквы, числа и некоторые знаки препинания, но первой в имени переменной всегда должна вводиться буква. VBA не различает регистры в названии переменных.
Нельзя использовать в именах пробелы или точки, но можно разделять слова нижним подчеркиванием. В VBA используется очень много зарезервированных слов, которые не допускается применять в качестве названий переменных или процедур. Интерпретатор VBA облегчает жизнь программистам, автоматически обрабатывая любые.
Однако это чревато негативными последствиями — медленным выполнением операций и менее эффективным использованием памяти. В результате, позволяя VBA самостоятельно определять типы данных, вы можете столкнуться с проблемами выполнения больших или сложных приложений. Рекомендуется выбирать тот тип данных, в котором используется минимальное количество байтов для хранения значений. Для проведения математических вычислений в рабочих листах Excel использует тип данных Double. Его рекомендуется применять и в процессе обработки чисел в VBA для обеспечения той же точности вычислений.
Если вы не объявили тип данных для переменной, используемой в процедуре VBA, по умолчанию будет задан тип данных Variant. Для определения типа данных переменной используется функция VBA TypeName. Чтобы обеспечить обязательное объявление всех используемых переменных, необходимо включить следующую строку в качестве первой инструкции в модуле VBA: Option Explicit. Чтобы оператор Option Explicit автоматически включался при вставке нового модуля VBA, пройдите в редакторе VBE по меню Tools – Options и на вкладке Editor выберите параметр Require Variable Declaration (Обязательное объявление переменных; подробнее см. Существуют три типы областей действия переменных: Работа с константами Иногда необходимо использовать именованное значение или строку, которая никогда не изменяется, — константу. Если процедура несколько раз ссылается на определенное значение, например, на процентную ставку, следует объявить это значение как константу и использовать в выражениях имя константы, а не ее значение.
Такой прием не только делает программу более удобной для восприятия, но и облегчает последующее изменение кода — достаточно изменить только одну инструкцию, а не несколько. Для объявления констант используется оператор Const. Например, Const NumQuarters as Integer = 4 Как и переменные, константы имеют область действия.
При попытке изменения значения константы в коде VBA вы получите сообщение об ошибке (чего и следовало ожидать). Константа — это постоянное значение, а не переменная. В Excel и VBA существует целый ряд предопределенных констант, которые можно использовать без объявления. Вам даже необязательно знать значение этих констант для их применения.
При записи макросов обычно используются константы, а не значения. В следующей процедуре для изменения ориентации страницы активного листа на альбомную применена встроенная константа: Sub SetToLandscape ActiveSheet.PageSetup.Orientation = xlLandscape End Sub Фактическое значение переменной xlLandscape равно 2. Окно Object Browser содержит список всех констант Excel и VBA. Чтобы открыть Object Browser в VBE, нажмите клавишу. В VBA дата и время определяются как значения, заключенные между знаками # Const FirstDay As Date = #1/1/2007# Const Noon = #12:00:00# Даты всегда определяются в формате 'месяц/день/год ', даже если система настроена на отображение данных в другом формате. Операторы присваивания Оператор присваивания — это инструкция VBA, выполняющая математическое вычисление и присваивающая результат переменной или объекту.
В справочной системе Excel выражение определяется как комбинация ключевых слов, операторов, переменных и констант. Эта комбинация возвращает в результате строку, число или объект. Выражение может выполнять вычисление, обрабатывать символы или тестировать данные. Большое количество операций, выполняемых в VBA, связано с разработкой (и отладкой) выражений. Если вы знаете, как создавать формулы в Excel, то у вас не будет возникать проблем с созданием выражений в VBA. В формуле рабочего листа Excel результат отображается в ячейке. С другой стороны, выражение VBA может присваивать значение переменной или использоваться как значение свойства.
В VBA оператором присваивания выступает знак равенства (=). Массивы Массив — это группа элементов одного типа, которые имеют общее имя; на конкретный элемент массива ссылаются, используя имя массива и индекс.
Например, можно определить массив из 12 строк так, чтобы каждая переменная соответствовала названию месяца. Если вы назовете массив MonthNames, то можете обратиться к первому элементу массива как MonthNames (0), ко второму — как MonthNames (1) и так до MonthNames (11). Объявить массив, содержащий ровно 100 целых чисел, можно следующим образом: Dim MyArray(1 То 100) As Integer По умолчанию в массивах VBA в качестве первого элемента используется нуль. Если вы хотите, чтобы в качестве первого индекса всех массивов использовалась единица, то перед первой процедурой модуля нужно сделать следующее объявление: Option Base 1 Динамический массив не имеет предопределенного количества элементов. Он объявляется с незаполненными значениями в скобках: Dim MyArray As Integer. Тем не менее, прежде чем динамический массив можно будет использовать в программе, необходимо обратиться к оператору ReDim, указывающему VBA, сколько элементов находится в массиве.
Для этого часто применяется переменная, значение которой неизвестно до тех пор, пока процедура не будет запущена на выполнение. Например, если переменной х присвоено число, размер массива определяется с помощью следующего оператора: ReDim MyArray (1 to х). Объектные переменные Объектая переменная — это переменная, представляющая целый объект, например, диапазон или рабочий лист: Dim InputArea As Range. Для присваивания объекта переменной воспользуйтесь ключевым словом Set: Set InputArea = Range(«С16:Е16»). Встроенные функции В VBA есть ряд встроенных функций, упрощающих вычисления и операции. Например, функция VBA UCase, преобразующая строку в верхний регистр, эквивалентна функции Excel ПРОПИСН.
Чтобы использовать функцию Excel в операторе VBA, перед названием функции введите следующее выражение: Application.WorksheetFunction Важно понимать, что вы не можете использовать функции Excel, для которых в VBA представлены эквивалентные функции. Например, VBA не позволяет получить доступ к функции Excel КОРЕНЬ (SQRT), так как в VBA имеется собственная версия этой функции: Sqr.
Таким образом, следующий оператор выдает ошибку: MsgBox Application.WorksheetFunction.Sqrt(123) Функция MsgBox — одна из самых полезных в VBA. Кроме прочего, это превосходный инструмент отладки, поскольку вы можете в любое время вставить функцию MsgBox, чтобы приостановить программу и отобразить результат вычисления или присваивания.
Функция MsgBox не только возвращает значение, но и отображает диалоговое окно, в котором пользователь может выполнить определенные действия. Значение, возвращаемое функцией MsgBox, является ответом пользователя на отображенный запрос. Функция MsgBox может применяться даже в том случае, когда ответ пользователя не требуется, а нужно отобразить сообщение. Синтаксис функции MsgBox: MsgBox(сообщение, кнопки , заголовок , файлсправки, контекст). Сообщение (обязательный аргумент) — сообщение, которое отображается в диалоговом окне. Кнопки (необязательный аргумент) — значение, определяющее, какие кнопки и пиктограммы (если нужно) отображаются в окне сообщения. Применяйте встроенные константы (например, vbYesNo).
Заголовок (необязательный аргумент) — текст, который отображается в строке заголовка окна сообщения. По умолчанию отображается текст Microsoft Excel. Файлсправки (необязательный аргумент) — название файла справки, соответствующего окну сообщения. Контекст (необязательный аргумент) — контекстный идентификатор раздела справки. Представляет конкретный раздел справки для отображения. Если используется аргумент контекст, следует также задействовать аргумент файлсправки.
Вы можете присвоить полученное значение переменной либо использовать функцию без оператора присваивания. В приведенном ниже примере результат присваивается переменной Ans. Ans = MsgBox( 'Продолжить? ', vbYesNo + vbQuestion, 'Сообщи ') If Ans = vbNo Then Exit Sub Обратите внимание, что в качестве значения аргумента кнопки используется сумма двух встроенных констант (vbYesNo + vbQuestion). Благодаря константе vbYesNo в окне сообщения отображаются две кнопки: одна с меткой Yes, а вторая — с меткой No.
Добавление vbQuestion в состав аргумента также приведет к отображению значка вопроса. Как только будет выполнен первый оператор, переменная Ans получит одно из двух значений, представленных константами vbYes и vbNo. В этом примере процедура завершает свою работу после щелчка на кнопке No. Управление объектами и коллекциями VBA предлагает две конструкции, которые помогут вам упростить управление объектами и коллекциями.
Конструкция With — End With позволяет выполнять несколько операций над одним объектом. Чтобы понять, как она работает, проанализируйте следующую процедуру, которая изменяет шесть свойств выделенного объекта (подразумевается, что выделен объект Range).
Sub ChangeFontl Selection.Font.Name = 'Cambria ' Selection.Font.Bold = True Selection.Font.Italic = True Selection.Font.Size = 12 Selection.Font.Underline = xlUnderlineStyleSingle Selection.Font.ThemeColor = xlThemeColorAccentl End Sub Эту процедуру можно переписать с помощью конструкции With — End With. Процедура, показанная ниже, работает точно так же, как и предыдущая. Sub ChangeFont2 With Selection.Font.Name = 'Cambria '.Bold = True.Italic = True.Size = 12.Underline = xlUnderlineStyleSingle.ThemeColor = xlThemeColorAccentl End With End Sub Предположим, вы решили выполнить действие над всеми объектами коллекции или вам необходимо оценить все объекты коллекции и совершить действие при выполнении определенных условий. Это идеальная ситуация для применения конструкции For Each — Next. Синтаксис конструкции: For Each элемент In коллекция инструкции Exit For инструкции Next элемент Например: Sub CountSheets Dim Item as Worksheet For Each Item In ActiveWorkbook.Worksheets MsgBox Item.Name Next Item End Sub В следующем примере закрываются все окна, за исключением активного: Sub Closelnactive Dim Book as Workbook For Each Book In Workbooks If Book.Name ActiveWorkbook.Name Then Book.Close Next Book End Sub Контроль за выполнением кода Некоторые процедуры VBA начинают выполняться с первых строк кода. Однако иногда необходимо контролировать последовательность операций, пропуская отдельные операторы, повторно выполняя некоторые команды и проверяя условия для определения следующего действия, выполняемого процедурой.

Оператор GoTo перенаправляет ход выполнения программы на новую инструкцию, которая помечена специальным образом (текстовая строка, заканчивающаяся двоеточием, или число, заканчивающееся пробелом, указанные перед инструкцией). В приведенной ниже процедуре применена функция VBA InputBox для получения имени пользователя. Если имя пользователя отличается от Ховард, то процедура переходит к метке WrongName, на чем заканчивает свою работу. В противном случае процедура выполняет дополнительные операции.
Оператор Exit Sub заканчивает выполнение процедуры. Sub GoToDemo UserName = InputBox( 'Введите свое имя: ') If UserName 'Ховард ' Then GoTo WrongName MsgBox ( 'Привет, Ховард ') ' — Здесь вводится дополнительный код — Exit Sub WrongName: MsgBox 'Извините, эту процедуру может запускать только Ховард. ' End Sub В действительности оператор GoTo необходим только для перехват ошибок (код выше является неудачным примером, который не следует использовать).
Вероятно, конструкция If-Then чаще остальных используется для группирования инструкций VBA: If условие Then инструкцииистина Else инструкцииложь Например Sub GreetMe If Time = 0.5 And Time.
Столкнулись с необходимостью раз за разом удалять пятьдесят таблиц в Word 2010? Требуется, чтобы при открытии документа запрашивался пользовательский ввод? Не знаете, как эффективно перенести свои контакты из Microsoft Outlook 2010 в электронную таблицу Microsoft Excel 2010? Можно выполнить эти задачи и достичь гораздо большего с помощью VBA для Office 2010. Это простой и в то же время мощный язык программирования, который можно использовать, чтобы расширить возможности приложений Office 2010.
Данная статья предназначена для опытных пользователей Office, которые желают познакомиться с VBA и получить некоторое представление о том, как программирование может помочь им настроить Office 2010. Пакет приложений Office 2010 обладает множеством возможностей. Существует много способов создания и форматирования документов, сообщений электронной почты, баз данных, форм, электронных таблиц и презентаций, а также управления ими. Большое преимущество программирования на VBA в Office 2010 состоит в том, что практически любую операцию, которую можно выполнить с помощью мыши, клавиатуры или диалогового окна, можно также проделать с помощью VBA.
Более того, если операцию удалось осуществить посредством VBA однажды, ее можно легко повторить сотню раз. По сути, автоматизация повторяющихся задач — это одно из наиболее распространенных применений VBA в Office.
Помимо создания мощных скриптов, ускоряющих повседневные задачи, с помощью VBA можно добавлять в приложения Office 2010 новые функциональные возможности. Например, можно написать код VBA, отображающий всплывающее сообщение, которое напоминает пользователю о необходимости сохранить документ на определенный сетевой диск при попытке сохранения документа. В этой статье описываются некоторые основные причины для использования возможностей программирования на VBA. Здесь описывается язык VBA и встроенные средства, которые можно использовать для работы со своими решениями. И, наконец, в данной статье можно найти советы и приемы, чтобы избежать некоторых распространенных ошибок программирования. Программирование на VBA эффектно и эффективно при создания решений для устранения повторяющихся проблем форматирования и исправлений.
Например, вам когда-нибудь приходилось изменять стиль абзаца в верхней части каждой страницы в Word? Или менять формат нескольких таблиц, скопированных из Excel в документ Word или электронную почту Outlook? А вносить одинаковые изменения в несколько контактов Outlook? Если имеется изменение, которое нужно внести более десяти или двадцати раз, возможно, стоит реализовать его с помощью VBA.
Если изменение нужно внести несколько сотен раз, определенно следует рассмотреть VBA. Почти все изменения форматирования или редакторские правки, которые можно внести вручную, можно реализовать на VBA.
Расширения возможностей взаимодействия с пользователем. Программирование на VBA — это мощное решение, но данный подход не всегда является оптимальным. Иногда, чтобы достичь поставленных целей, имеет смысл воспользоваться другими методами. Важнейший вопрос состоит в поиске более легкого способа.
Перед запуском проекта VBA обратите внимание на встроенные инструменты и стандартные функциональные возможности. Например, если необходимо выполнить времяемкую задачу редактирования или размещения элементов, для решения проблемы следует рассмотреть возможность использования стилей или сочетания клавиш. Можете ли вы выполнить задачу единожды, а затем повторить ее с помощью сочетания клавиш CTRL+Y ('Повторить')? Можно ли создать документ правильного формата или с нужным шаблоном и затем скопировать содержимое в новый документ?
Приложения Office 2010 обладают множеством возможностей; возможно, что нужное решение уже в них предусмотрено. Уделите время изучению дополнительных сведений об Office 2010 до начала программирования.
Перед созданием проекта VBA убедитесь, что у вас есть время на работу с VBA. Программирование требует внимания и может оказаться непредсказуемым. Если вы — начинающий программист, тем более не стоит увлекаться программированием, если не хватает времени на внимательную работу. Попытки написать 'скрипт на скорую руку' для решения проблемы в сжатые сроки может привести к напряженной ситуации. Если вы торопитесь, воспользуйтесь более привычными методами, даже если они сопряжены с монотонностью и повторениями. Возможно, вы полагаете, что написание кода — сложный или загадочный процесс, но его базовые принципы основаны на применении повседневной логики и вполне доступны. Приложения Office 2010 созданы таким образом, что те вещи, которые называются объектами и которые могут получать инструкции, представлены в них во многом аналогично тому, как выглядит телефон с кнопками, предназначенными для взаимодействия с этим телефоном.
Когда вы нажимаете кнопку, телефон распознает инструкцию и включает соответствующую цифру в набираемую последовательность. В программировании вы взаимодействуете с приложением с помощью отправки инструкций различным объектам в нем. Эти объекты могут расширяться, но и у такого расширения есть пределы.
Они смогут делать только то, для чего были разработаны, и выполнят только ваши инструкции. Например, представьте себе пользователя, который открывает документ в Word 2010, вносит несколько изменений, сохраняет документ и закрывает его. В мире программирования на VBA приложение Word 2010 предоставляет объект Document. Используя код VBA, можно заставить объект Document выполнять такие действия, как открытие, сохранение и закрытие.
В следующем разделе описывается организация объектов. Объектная модель. Разработчики организуют объекты программирования в виде иерархии, и такая иерархия называется объектной моделью приложения. В Word, например, есть объект верхнего уровня Application, который содержит объект Document.
Объект Document содержит объекты Paragraph и т. д. В объектных моделях приблизительно отражено то, что вы видите в пользовательском интерфейсе. Они являются концептуальной картой приложения и его возможностей. Определение объекта называется классом, и вы, возможно, увидите, как два этих термина используются попеременно. С технической точки зрения класс — это описание или шаблон, используемый для формирования или создания экземпляра объекта.
Уже существующим объектом можно манипулировать, задавая его свойства и вызывая его методы. Если представить объект в виде существительного, тогда свойства станут прилагательными, описывающими существительное, а методы — глаголами, которые приводят его в действие.
Изменение свойства приводит к модификации определенной характеристики внешнего вида или поведения объекта. Вызов одного из методов объекта заставляет последний выполнить какое-либо действие. Код VBA в этой статье взаимодействует с приложением Office 2010, в котором многие объекты, которыми управляет код, уже настроены и работают; например, сам объект Application, Worksheet в Excel 2010, Document в Word 2010, Presentation в PowerPoint 2010, объекты Explorer и Folder в Outlook 2010. Узнав основную структуру объектной модели и некоторые ключевые свойства объекта Application, которые предоставляют доступ к его текущему состоянию, можно начать расширение приложения Office 2010 с помощью VBA в Office. Application.ActiveDocument.Save Прочитайте код слева направо: 'В этом приложении (Application) с документом (Document), на который ссылается активный документ (ActiveDocument), вызовите метод сохранения (Save)'.
Помните, что Save — самая простая форма метода; ему не нужны подробные инструкции от разработчика. Объекту Document дается команда сохранения ( Save), а дополнительные данные вводить не нужно.

Если методу требуются дополнительные данные, они называются параметрами. В следующем коде выполняется метод SaveAs, для которого требуется указать новое имя файла. Application.ActiveSheet.Range( 'A1'). Select Application.Selection.Value = 'Hello World' Первая задача при программировании на VBA — осознать объектную модель каждого приложения Office 2010 и научиться читать синтаксис объекта, метода и свойства. Во всех приложениях Office 2010 объектные модели похожи, но каждая из них обладает особенными характеристиками в соответствии с типом документов и объектов, с которыми приложение работает. В первой строке примера кода указан объект Application, на этот раз это приложение Excel 2010, а затем объект ActiveSheet, который предоставляет доступ к активному листу.
После этого указан новый термин, Range, который означает 'определить диапазон ячеек следующим способом'. Код указывает объекту Range создать себя с одной ячейкой A1.
Другими словами, в первой строке кода объявляется объект Range и выполняется метод для его выбора. Результат автоматически сохраняется в другом свойстве объекта Application с именем Selection. Во второй строке кода задается значение свойства Value объекта Selection, равное 'Hello World' и отображающееся в ячейке A1. Самый простой код VBA может предоставлять доступ к объектам в приложении Office и задавать их свойства.
Например, можно получить доступ к строкам в таблице Word и изменять их форматирование в скрипте VBA. Это звучит просто, но может быть невероятно полезно; написав такой код, можно освоить всю мощь программирования для внесения одинаковых изменений в несколько таблиц или документов в соответствии с определенной логикой или каким-то условием. Сделать 1000 изменений для компьютера почти то же самое, что 10, поэтому при работе с большими документами и при решении множества проблем VBA может оказаться очень полезен и сэкономить много времени. Макросы и редактор Visual Basic. Теперь вы кое-что знаете о том, как приложения Office 2010 предоставляют свои объектные модели.
Возможно, вам не терпится попробовать вызвать методы объекта, задать его свойства и отреагировать на события объекта. Для этого необходимо написать свой код таким образом, чтобы он распознавался в Office. Обычно это делается с помощью редактора Visual Basic.
Язык Программирования Vba
Несмотря на то, что он установлен по умолчанию, многие пользователи бывают не осведомлены даже о его наличии до тех пор, пока не включат его на ленте. Открытие вкладки 'Разработчик'. Для защиты пользователей Office 2010 от вирусов и вредоносных макросов нельзя сохранять код макросов в стандартном документе Office 2010 со стандартным расширением файла. Вместо этого следует сохранить код в файле с особым расширением. Например, нельзя сохранить макросы в стандартном документе Word 2010 с расширением DOCX; вместо этого используется специальный документ Word 2010 с использованием макросов с расширением DOCM.
При открытии DOCM-файла система безопасности Office 2010 все равно может запретить запуск макросов в документе, сообщая или не сообщая об этом пользователю. Изучите параметры и настройки центра управления безопасностью во всех приложениях Office 2010. По умолчанию макросы отключены, но пользователь оповещается об этом и может включить их. Можно указать специальные папки, в которых можно выполнять макросы, создавая надежные расположения, надежные документы или надежных издателей. Самый динамичный способ — использовать надежных издателей, которые работают с документами с цифровыми подписями, распространяемыми пользователями.
Для получения дополнительных сведений о параметрах безопасности в определенном приложении Office 2010 в диалоговом окне Параметры щелкните Центр управления безопасностью и выберите Настройки центра управления безопасностью. Если нажать кнопку Макросы на вкладке Разработчик, открывается диалоговое окно Макрос, которое предоставляет доступ к подпрограммам или макросам VBA, которые можно использовать из определенного документа или приложения. Кнопка Visual Basic открывает редактор Visual Basic, где можно создавать и редактировать код VBA. Также на вкладке Разработчик в Word 2010 и Excel 2010 размещена кнопка Записать макрос, которая автоматически создает код VBA, позволяющий воспроизводить действия, выполненные пользователем в приложении.
Запись макроса — это великолепное средство, которое можно использовать для изучения VBA. Читая сгенерированный код, можно понять язык VBA и объединить знания пользователя и программиста Office 2010. Единственное, что нужно помнить — это то, что сгенерированный код может быть запутанным, так как редактор макросов использует некоторые предположения о намерениях пользователя, которые не всегда точны. Запись макроса. Откройте Excel 2010, создайте рабочую книгу и щелкните вкладку Разработчик на ленте. Нажмите кнопку Запись макроса и примите все параметры по умолчанию в диалоговом окне Запись макроса, в том числе Macro1 в качестве имени макроса и This Workbook в качестве расположения.
Нажмите кнопку ОК, чтобы начать запись макроса. Заметьте, что текст кнопки изменяется на Остановить запись.
Нажмите эту кнопку, когда выполните все записываемые действия. Щелкните ячейку B1 и введите классическую первую строку программиста: Hello World.
Прекратите ввод текста и посмотрите на кнопку Остановить запись; она отключена, так как Excel 2010 ждет, пока пользователь завершит ввод значения ячейки. Щелкните ячейку B2, чтобы завершить действие в ячейке B1, а затем нажмите кнопку Остановить запись.
Щелкните Макросы на вкладке Разработчик, выберите макрос Macro1, если он еще не выбран, и щелкните Правка, чтобы просмотреть код Macro1 в редакторе Visual Basic. Sub Macro1 ' ' Macro1 Macro ' ' Range( 'B1'). Select ActiveCell.FormulaR1C1 = 'Hello World' Range( 'B2'). Select End Sub Учтите схожие моменты с предыдущим примером кода, в котором выбирается ячейка A1, и отличия от него.
Эксель Это Просто
В этом примере кода выбирается ячейка B1, а затем строка 'Hello World' записываются в активную ячейку. Кавычки вокруг текста обозначают строковое значение (в противоположность числовому значению). Вспомните, что чтобы отобразить кнопку Остановить запись, нужно было щелкнуть ячейку B2.
Это действие также задается в строке кода. Средство записи макроса записывает каждое нажатие клавиши. Строки кода, начинающиеся на апостроф и выделенные зеленым цветом — это комментарии, которые поясняют код или напоминают другим программистам его предназначение. VBA игнорирует любую строку или ее часть, которые начинаются с одинарной кавычки. Написание понятных и подходящих комментариев в коде очень важно, но в этой статье данная тема не затрагивается.
В следующих ссылках на этот код в данной статье эти четыре строки комментариев отсутствуют. Когда средство записи макроса генерирует код, оно использует сложный алгоритм для определения нужных методов и свойств. Если данное свойство незнакомо, пользователю могут помочь множество ресурсов.
Например, в записанном макросе средство записи макроса сгенерировало код, который ссылается на свойство ForumulaR1C1. Не знаете, что это значит? Выберите ForumulaR1C1 в записанном макросе и нажмите F1. Система справки запустит быстрый поиск, определит, что нужные темы есть в разделе 'Разработчик' справки Excel 2010, и укажет свойство FormulaR1C1. Можно щелкнуть ссылку, чтобы прочитать описание свойства, но прежде обратите внимание на ссылку Справочник по объектной модели Excel рядом с нижней частью окна. Щелкните ее, чтобы просмотреть список объектов, которые Excel 2010 использует в объектной модели для описания рабочих листов и их компонентов. Щелкните любой из них, чтобы просмотреть свойства и методы, которые применяются к этому объекту, а также ссылки на другие связанные с ними параметры.
Во многих записях справки содержатся короткие примеры кода, которые могут быть полезны. Например, можно перейти по ссылкам в описании объекта Borders, чтобы узнать, как задать границу в VBA. Сообщество программистов на VBA очень большое; поиск в Интернете почти всегда может дать пример кода на VBA, который выполняет почти те же действия, которые необходимы вам. Если не удается найти хороший пример, попробуйте разбить задачу на более мелкие модули и выполнить поиск каждого из них. Или попробуйте найти более общую, но аналогичную задачу. Если начать с примеров, это может сэкономить много времени. Это не означает, что в Интернете всегда доступен бесплатный и качественный код.
В действительности, в найденных программах могут быть ошибки. Идея в том, что примеры из Интернета или документации по VBA помогают начать работу. Помните, что для изучения программирования требуется время и умственные усилия.
Перед тем как использовать очередное решение для решения проблемы, спросите себя, подходит ли VBA для этого. Упрощение задачи.
Существует два основных вида ошибок программирования: синтаксические ошибки, которые нарушают грамматические правила языка программирования и ошибки времени выполнения, которые синтаксически правильны, но вызывают сбой, когда VBA пытается выполнить код. Хотя исправлять синтаксические ошибки неприятно, их легко обнаружить; редактор Visual Basic выдает сопровождающееся звуковым сигналом сообщение об ошибке и меняет цвет текста, если при вводе кода найдена синтаксическая ошибка. Например, в VBA строковые значения должны быть заключены в двойные кавычки. Чтобы узнать, что происходит при использовании одинарных кавычек, вернитесь в редактор Visual Basic и замените строку 'Wow!' Слово Wow в одинарных кавычках).
Если щелкнуть следующую строку, среагирует редактор Visual Basic. Сообщение об ошибке 'Ошибка компиляции. Ожидается: выражение' не особо помогает, но строка, содержащая ошибку, становится красной, что говорит о синтаксической ошибке в этой строке. В результате программа не будет запускаться.
Нажмите кнопку ОК и измените текст на 'Wow!' Ошибки времени выполнения обнаружить сложнее, так как синтаксически все выглядит правильно, но при попытке выполнить код возникает сбой. Например, откройте редактор Visual Basic и измените имя свойства Value на ValueX в макросе, намеренно вызывая ошибку времени выполнения, так как у объекта Range нет свойства ValueX. Вернитесь в документ Excel 2010, откройте диалоговое окно Макрос и запустите Macro1 еще раз. Появится сообщение Visual Basic, в котором описывается ошибка: 'Объект не поддерживает это свойство метода'. Хотя текст и так понятен, нажмите кнопку 'Отладка' для получения дополнительных сведений. После возвращения в редактор Visual Basic будет включен специальный режим отладки, в котором желтым цветом выделяется строка кода с ошибкой.
Excel Vba Программирование
Как и ожидалось, желтым выделена строка со свойством ValueX. Отладчик Visual Basic работает Можно внести изменения в исполняемый код VBA, поэтому измените ValueX на Value и нажмите маленькую зеленую кнопку воспроизведения в меню Отладка. Программа должна запуститься без ошибок. Будет полезно узнать, как использовать отладчик для решения более сложных задач. По крайней мере изучите, как устанавливать точки останова, чтобы прекращать выполнение программы там, где нужно взглянуть на код, как добавлять контрольные значения, чтобы просматривать значения разных переменных и свойств во время выполнения кода, и как пошагово, строка за строкой, выполнять код. Все эти возможности доступны в меню Отладка, а серьезный пользователь отладчика обычно запоминает соответствующие сочетания клавиш.
Правильное использование справочных материалов. Рано или поздно все программисты попадают в ситуацию, когда невозможно решить какую-либо проблему, даже прочитав все найденные статьи и проведя много бессонных ночей в поисках ее решения. К счастью, в Интернете появилось сообщество разработчиков, которые помогают друг другу при решении задач программирования.
Если поискать в Интернете 'форум разработчиков office', можно найти несколько таких групп обсуждений. Можно поискать 'разработка office' или описание проблемы и найти нужные форумы, блоги и статьи. Если сделано все, что возможно, для решения проблемы, не бойтесь задать вопрос на форуме разработчиков. В таких форумах приветствуются вопросы от новичков-программистов, и многие опытные разработчики с радостью помогут им. Далее описаны некоторые вопросы этикета, которых следует придерживаться при публикации на форуме разработчиков.
Перед публикацией поищите на сайте часто задаваемые вопросы или инструкции, которые следует соблюдать. Убедитесь, что публикация соответствует этим инструкциям и расположена в нужном разделе форума. Представьте ясный и полный пример кода, и если он является частью более сложного кода, укажите это.
Опишите проблему четко и кратко и укажите действия, выполненные для решения проблемы. Не спешите и напишите вопрос, как можно лучше, даже если вы взволнованны или вам не хватает времени. Опишите ситуацию так, чтобы читатели поняли ее после первого прочтения. Будьте вежливы и выражайте благодарность за все ответы. Sub Macro1 If Worksheets(1).Range( 'A1').Value = 'Yes!' Then Dim i As Integer For i = 2 To 10 Worksheets(1).Range( 'A' & i).Value = 'OK! ' & i Next i Else MsgBox 'Put Yes!
Excel Vba Программирование Для Чайников
In cell A1' End If End Sub Введите или вставьте код в редакторе Visual Basic и запустите его. Следуйте инструкциям в появившемся окне сообщений и измените текст в ячейке A1 с Wow! На Yes!, а затем выполните программу еще раз, чтобы увидеть богатые возможности циклов. В этом примере кода показаны переменные, ветвление и циклы.
Просмотрите его внимательно после выполнения и попробуйте определить, что происходит после выполнения каждой строки. Sub RemoveEmptyTextBoxes Dim SlideObj As Slide Dim ShapeObj As Shape Dim ShapeIndex As Integer For Each SlideObj In ActivePresentation.Slides For ShapeIndex = SlideObj.Shapes. Count To 1 Step -1 Set ShapeObj = SlideObj.Shapes(ShapeIndex) If ShapeObj.Type = msoTextBox Then If Trim(ShapeObj.TextFrame.TextRange.Text) = ' Then ShapeObj.Delete End If End If Next ShapeIndex Next SlideObj End Sub Имейте в виду, что в коде выполняется цикл по всем слайдам и удаляются все текстовые поля, в которых нет текста. Переменная-счетчик уменьшается, а не увеличивается на 1, так как при каждом удалении объекта он удаляется из коллекции, что уменьшает счетчик на 1.
Копирование контакта из Outlook 2010 в Word 2010.