Разное

Excel макрос vba: Макросы VBA Excel

Содержание

Начало работы с VBA в Office



  • Чтение занимает 22 мин

В этой статье

Постоянно возникает проблема, вызванная повторяющейся очисткой данных в 50 таблицах в Word?Are you facing a repetitive clean up of fifty tables in Word? Хотите, чтобы при открытии определенного документа пользователи получали запрос на добавление данных?Do you want a particular document to prompt the user for input when it opens? Не знаете, как быстро и легко перенести список контактов из Microsoft Outlook в таблицу Microsoft Excel?Are you having difficulty figuring out how to get your contacts from Microsoft Outlook into a Microsoft Excel spreadsheet efficiently?

Можно выполнить эти задачи и достичь гораздо большего с помощью Visual Basic для приложений (VBA) для Office. Это простой и в то же время мощный язык программирования, применение которого позволит расширить возможности приложений Office.You can perform these tasks and accomplish a great deal more by using Visual Basic for Applications (VBA) for Office—a simple, but powerful programming language that you can use to extend Office applications.

Данная статья предназначена для опытных пользователей Office, которые желают познакомиться с VBA и получить некоторое представление о том, как программирование может помочь им настроить Office.This article is for experienced Office users who want to learn about VBA and who want some insight into how programming can help them to customize Office.

Набор приложений Office обладает множеством возможностей.The Office suite of applications has a rich set of features. Существует множество разных способов создания, форматирования и управления документами, электронной почтой, базами данных, формами, электронными таблицами и презентациями.There are many different ways to author, format, and manipulate documents, email, databases, forms, spreadsheets, and presentations. Значительное преимущество программирования на VBA в Office заключается в том, что почти каждое действие, осуществляемое с мышью, клавиатурой или диалоговым окном, можно выполнить с помощью VBA.The great power of VBA programming in Office is that nearly every operation that you can perform with a mouse, keyboard, or a dialog box can also be done by using VBA. Если действие можно выполнить с помощью VBA, значит в дальнейшем его можно легко осуществлять сотни раз.Further, if it can be done once with VBA, it can be done just as easily a hundred times. (На самом деле автоматизация повторяющихся задач — одно из наиболее частых применений VBA в Office).(In fact, the automation of repetitive tasks is one of the most common uses of VBA in Office.)

Помимо возможности написания скрипта VBA для ускорения повседневных задач, VBA можно использовать для добавления новых функций в приложения Office или создания запросов и взаимодействия с пользователем ваших документов в соответствии с потребностями вашей организации.Beyond the power of scripting VBA to accelerate every-day tasks, you can use VBA to add new functionality to Office applications or to prompt and interact with the user of your documents in ways that are specific to your business needs. Например, можно написать код VBA, выводящий всплывающее сообщение, которое напоминает пользователям о необходимости сохранения документа на определенном сетевом диске при первой попытке его сохранения.For example, you could write some VBA code that displays a pop up message that reminds users to save a document to a particular network drive the first time they try to save it.

В этой статье описываются некоторые основные причины для использования возможностей программирования на VBA.This article explores some of the primary reasons to leverage the power of VBA programming. Здесь описывается язык VBA и встроенные средства, которые можно использовать для работы со своими решениями.It explores the VBA language and the out-of-the-box tools that you can use to work with your solutions. И, наконец, в данной статье можно найти советы и приемы, чтобы избежать некоторых распространенных ошибок программирования.Finally, it includes some tips and ways to avoid some common programming frustrations and missteps.

Примечание

Хотите создавать решения, которые расширяют возможности Office на разнообразных платформах?Interested in developing solutions that extend the Office experience across multiple platforms? Ознакомьтесь с новой моделью надстроек Office.Check out the new Office Add-ins model. У надстроек Office мало места по сравнению с надстройками и решениями VSTO, которые можно создавать с помощью практически любой технологии веб-программирования, например HTML5, JavaScript, CSS3 и XML.Office Add-ins have a small footprint compared to VSTO Add-ins and solutions, and you can build them by using almost any web programming technology, such as HTML5, JavaScript, CSS3, and XML.

Причины использования VBAWhen to use VBA and why

Есть несколько основных причин использовать программирование на VBA в Office.There are several principal reasons to consider VBA programming in Office.

Автоматизация и повторяемостьAutomation and repetition

Программирование на VBA эффектно и эффективно при создании решений для устранения повторяющихся проблем форматирования и исправлений.VBA is effective and efficient when it comes to repetitive solutions to formatting or correction problems. Например, вам когда-нибудь приходилось изменять стиль абзаца в верхней части каждой страницы в Word?For example, have you ever changed the style of the paragraph at the top of each page in Word? Или менять формат нескольких таблиц, скопированных из Excel в документ Word или электронную почту Outlook?Have you ever had to reformat multiple tables that were pasted from Excel into a Word document or an Outlook email? А вносить одинаковые изменения в несколько контактов Outlook?Have you ever had to make the same change in multiple Outlook contacts?

Если имеется изменение, которое нужно внести более десяти или двадцати раз, возможно, стоит реализовать его с помощью VBA.If you have a change that you have to make more than ten or twenty times, it may be worth automating it with VBA. Если изменение нужно внести несколько сотен раз, определенно следует рассмотреть VBA.If it is a change that you have to do hundreds of times, it certainly is worth considering. Почти все изменения форматирования или редакторские правки, которые можно внести вручную, можно реализовать на VBA.Almost any formatting or editing change that you can do by hand, can be done in VBA.

Расширения возможностей взаимодействия с пользователемExtensions to user interaction

Иногда некоторые действия пользователей с документом или приложением Office обязательны или желательны, но не доступны в стандартном приложении.There are times when you want to encourage or compel users to interact with the Office application or document in a particular way that is not part of the standard application. Например, нужно уведомлять пользователей о необходимости что-то сделать при открытии, сохранении или печати документа.For example, you might want to prompt users to take some particular action when they open, save, or print a document.

Взаимодействие приложений OfficeInteraction between Office applications

Нужно скопировать все контакты из Outlook в Word и отформатировать их определенным способом?Do you need to copy all of your contacts from Outlook to Word and then format them in some particular way? Или же нужно переместить данные из Excel в набор слайдов PowerPoint?Or, do you need to move data from Excel to a set of PowerPoint slides? Иногда простое копирование и вставка не работают так, как надо, или же это происходит слишком медленно.Sometimes simple copy and paste does not do what you want it to do, or it is too slow. Можно использовать программирование на VBA для работы с данными в двух или более приложениях Office одновременно, а затем изменить содержимое в одном приложении с учетом содержимого в другом.You can use VBA programming to interact with the details of two or more Office applications at the same time and then modify the content in one application based on the content in another.

Другой способDoing things another way

Программирование на VBA — это мощное решение, но данный подход не всегда является оптимальным.VBA programming is a powerful solution, but it is not always the optimal approach. Иногда, чтобы достичь поставленных целей, имеет смысл воспользоваться другими методами.Sometimes it makes sense to use other ways to achieve your aims.

Важнейший вопрос состоит в поиске более легкого способа.The critical question to ask is whether there is an easier way. Перед запуском проекта VBA обратите внимание на встроенные инструменты и стандартные функциональные возможности.Before you begin a VBA project, consider the built-in tools and standard functionalities. Например, если необходимо выполнить времяемкую задачу редактирования или размещения элементов, для решения проблемы следует рассмотреть возможность использования стилей или сочетания клавиш.For example, if you have a time-consuming editing or layout task, consider using styles or accelerator keys to solve the problem. Можете ли вы выполнить задачу единожды, а затем повторить ее с помощью сочетания клавиш CTRL+Y («Повторить»)?Can you perform the task once and then use CTRL+Y (Redo) to repeat it? Можно ли создать документ правильного формата или с нужным шаблоном и затем скопировать содержимое в новый документ?Can you create a new document with the correct format or template, and then copy the content into that new document?

Приложения Office обладают множеством возможностей. Возможно, нужное решение уже в них предусмотрено.Office applications are powerful; the solution that you need may already be there. Узнайте больше об Office, прежде чем начинать программирование.Take some time to learn more about Office before you jump into programming.

Перед созданием проекта VBA убедитесь, что у вас есть время на работу с VBA.Before you begin a VBA project, ensure that you have the time to work with VBA. Программирование требует внимания и может оказаться непредсказуемым.Programming requires focus and can be unpredictable. Если вы начинающий программист, тем более не стоит увлекаться программированием, если не хватает времени на внимательную работу.Especially as a beginner, never turn to programming unless you have time to work carefully. Попытки написать «скрипт на скорую руку» для решения проблемы в сжатые сроки может привести к напряженной ситуации.Trying to write a «quick script» to solve a problem when a deadline looms can result in a very stressful situation. Если вы торопитесь, воспользуйтесь более привычными методами, даже если они сопряжены с монотонностью и повторениями.If you are in a rush, you might want to use conventional methods, even if they are monotonous and repetitive.

Введение в программирование на VBAVBA Programming 101

Использование кода для выполнения операций приложениямиUsing code to make applications do things

Написание кода может казаться очень сложным и непонятным процессом. На самом деле, его базовые принципы основаны на применении повседневной логики и вполне доступны.You might think that writing code is mysterious or difficult, but the basic principles use every-day reasoning and are quite accessible. Объекты в приложениях Microsoft Office, созданные для получения инструкций, можно сравнить с кнопками телефона.Microsoft Office applications are created in such a way that they expose things called objects that can receive instructions, in much the same way that a phone is designed with buttons that you use to interact with the phone. Когда вы нажимаете кнопку, телефон распознает команду и включает соответствующую цифру в набираемую последовательность.When you press a button, the phone recognizes the instruction and includes the corresponding number in the sequence that you are dialing. При программировании вы взаимодействуете с приложением, отправляя инструкции различным объектам.In programming, you interact with the application by sending instructions to various objects in the application. Эти объекты эффективны, но у них есть свои ограничения.These objects are expansive, but they have their limits. Они смогут делать только то, для чего были разработаны, и выполнять только ваши инструкции.They can only do what they are designed to do, and they will only do what you instruct them to do.

Например, представьте себе пользователя, который открывает документ Word, вносит несколько изменений, а затем сохраняет и закрывает его.For example, consider the user who opens a document in Word, makes a few changes, saves the document, and then closes it. Для программирования на VBA приложение Word предоставляет объект Document.In the world of VBA programming, Word exposes a Document object. Используя код VBA, можно заставить объект Document выполнять такие действия, как открытие, сохранение и закрытие.By using VBA code, you can instruct the Document object to do things such as Open, Save, or Close.

В следующем разделе описывается организация объектов.The following section discusses how objects are organized and described.

Объектная модельThe Object Model

Разработчики организуют объекты программирования в виде иерархии, и такая иерархия называется объектной моделью приложения.Developers organize programming objects in a hierarchy, and that hierarchy is called the object model of the application. В Word, например, есть объект верхнего уровня Application, который содержит объект Document.Word, for example, has a top-level Application object that contains a Document object. Объект Document содержит объекты Paragraph и т. д.The Document object contains Paragraph objects and so on. В объектных моделях приблизительно отражено то, что вы видите в пользовательском интерфейсе.Object models roughly mirror what you see in the user interface. Они являются концептуальной картой приложения и его возможностей.They are a conceptual map of the application and its capabilities.

Определение объекта называется классом, и вы, возможно, увидите, как два этих термина используются попеременно.The definition of an object is called a class, so you might see these two terms used interchangeably. С технической точки зрения класс — это описание или шаблон, используемый для формирования или создания экземпляра объекта.Technically, a class is the description or template that is used to create, or instantiate, an object.

Уже существующим объектом можно управлять, задавая его свойства и вызывая его методы.Once an object exists, you can manipulate it by setting its properties and calling its methods. Если представить объект в виде имени существительного, свойства станут прилагательными, описывающими существительное, а методы — глаголами, которые приводят его в действие.If you think of the object as a noun, the properties are the adjectives that describe the noun and the methods are the verbs that animate the noun. Изменение свойства приводит к модификации определенной характеристики внешнего вида или поведения объекта.Changing a property changes some quality of appearance or behavior of the object. Вызов одного из методов объекта заставляет последний выполнить какое-либо действие.Calling one of the object methods causes the object to perform some action.

Код VBA в этой статье взаимодействует с приложением Office, в котором многие объекты, которыми управляет код, уже настроены и работают (например, объект Application приложения, Worksheet в Excel, Document в Word, Presentation в PowerPoint, объекты Explorer и Folder в Outlook).The VBA code in this article runs against an open Office application where many of the objects that the code manipulates are already up and running; for example, the Application itself, the Worksheet in Excel, the Document in Word, the Presentation in PowerPoint, the Explorer and Folder objects in Outlook. Узнав основную структуру объектной модели и некоторые ключевые свойства объекта Application, которые предоставляют доступ к его текущему состоянию, можно расширить возможности приложения Office с помощью VBA в Office.Once you know the basic layout of the object model and some key properties of the Application that give access to its current state, you can start to extend and manipulate that Office application with VBA in Office.

МетодыMethods

В Word, например, можно изменить свойства и вызвать методы текущего документа Word с помощью свойства ActiveDocument объекта Application.In Word, for example, you can change the properties and invoke the methods of the current Word document by using the ActiveDocument property of the Application object. Это свойство ActiveDocument возвращает ссылку на объект Document, активный в приложении Word.This ActiveDocument property returns a reference to the Document object that is currently active in the Word application. «Возвращает ссылку на» означает «предоставляет доступ к».»Returns a reference to» means «gives you access to.»

В приведенном ниже коде выполняется именно то, что сказано; т. е. активный документ приложения сохраняется.The following code does exactly what it says; that is, it saves the active document in the application.

Application.ActiveDocument.Save

Прочитайте код слева направо: «В этом приложении (Application) с документом (Document), на который ссылается активный документ (ActiveDocument), вызовите метод сохранения (Save).Read the code from left to right, «In this Application, with the Document referenced by ActiveDocument, invoke the Save method.» Помните, что Save — самая простая форма метода; ему не нужны подробные инструкции от разработчика.Be aware that Save is the simplest form of method; it does not require any detailed instructions from you. Объекту Document дается команда сохранения (Save), а дополнительные данные вводить не нужно.You instruct a Document object to Save and it does not require any more input from you.

Если методу требуются дополнительные данные, они называются параметрами.If a method requires more information, those details are called parameters. В приведенном ниже коде выполняется метод SaveAs, для которого требуется указать новое имя файла.The following code runs the SaveAs method, which requires a new name for the file.

Application.ActiveDocument.SaveAs ("New Document Name.docx")

Значения, которые указываются в скобках после имени метода — это параметры.Values listed in parentheses after a method name are the parameters. Здесь новое имя файла — параметр метода SaveAs.Here, the new name for the file is a parameter for the SaveAs method.

СвойстваProperties

Для задания свойства используйте такой же синтаксис, что и для чтения свойства.You use the same syntax to set a property that you use to read a property. В приведенном ниже коде выполняется метод для выбора ячейки A1 в Excel и затем задается свойство для записи данных в ячейку.The following code executes a method to select cell A1 in Excel and then to set a property to put something in that cell.

    Application.ActiveSheet.Range("A1").Select
    Application.Selection.Value = "Hello World"

Первая задача при программировании на VBA — осознать объектную модель каждого приложения Office и научиться читать синтаксис объекта, метода и свойства.The first challenge in VBA programming is to get a feeling for the object model of each Office application and to read the object, method, and property syntax. Во всех приложениях Office объектные модели похожи, но каждая из них обладает особенными характеристиками в соответствии с типом документов и объектов, которыми управляет.The object models are similar in all Office applications, but each is specific to the kind of documents and objects that it manipulates.

В первой строке фрагмента кода указан объект Application, на этот раз это приложение Excel, а затем объект ActiveSheet, который предоставляет доступ к активному листу.In the first line of the code snippet, there is the Application object, Excel this time, and then the ActiveSheet, which provides access to the active worksheet. После этого указан термин Range, который означает «определить диапазон ячеек следующим способом».After that is a term not as familiar, Range, which means «define a range of cells in this way.» Код указывает объекту Range создать себя с одной ячейкой A1.The code instructs Range to create itself with just A1 as its defined set of cells. Другими словами, в первой строке кода объявляется объект Range и запускается метод для его выбора.In other words, the first line of code defines an object, the Range, and runs a method against it to select it. Результат автоматически сохраняется в другом свойстве объекта Application с именем Selection.The result is automatically stored in another property of the Application called Selection.

Во второй строке кода задается значение свойства Value объекта Selection, равное «Hello World» и отображающееся в ячейке A1.The second line of code sets the Value property of Selection to the text «Hello World», and that value appears in cell A1.

Самый простой код VBA может предоставлять доступ к объектам в приложении Office, с которым вы работаете, и задавать их свойства.The simplest VBA code that you write might simply gain access to objects in the Office application that you are working with and set properties. Например, можно получить доступ к строкам в таблице Word и изменить их форматирование в скрипте VBA.For example, you could get access to the rows in a table in Word and change their formatting in your VBA script.

Это звучит просто, но может быть невероятно полезно. Написав такой код, можно освоить всю мощь программирования для внесения одинаковых изменений в несколько таблиц или документов в соответствии с определенной логикой или каким-то условием.That sounds simple, but it can be incredibly useful; once you can write that code, you can harness all of the power of programming to make those same changes in several tables or documents, or make them according to some logic or condition. Сделать 1000 изменений для компьютера почти то же самое, что 10, поэтому при работе с большими документами и при решении множества проблем VBA может оказаться очень полезен и сэкономить много времени.For a computer, making 1000 changes is no different from making 10, so there is an economy of scale here with larger documents and problems, and that is where VBA can really shine and save you time.

Макросы и редактор Visual BasicMacros and the Visual Basic Editor

Теперь вы кое-что знаете об объектных моделях в приложениях Office. Возможно, вам не терпится попробовать вызвать методы объекта, задать его свойства и отреагировать на события объекта.Now that you know something about how Office applications expose their object models, you are probably eager to try calling object methods, setting object properties, and responding to object events. Для этого необходимо написать свой код так, чтобы он распознавался в Office. Обычно это делается с помощью редактора Visual Basic.To do so, you must write your code in a place and in a way that Office can understand; typically, by using the Visual Basic Editor. Несмотря на то, что он установлен по умолчанию, многие пользователи бывают не осведомлены даже о его наличии до тех пор, пока не включат его на ленте.Although it is installed by default, many users do not know that it is even available until it is enabled on the ribbon.

Все приложения Office используют ленту.All Office applications use the ribbon. Одной из вкладок на ленте является вкладка Разработчик, где можно вызвать редактор Visual Basic и другие инструменты разработчика.One tab on the ribbon is the Developer tab, where you access the Visual Basic Editor and other developer tools. Так как в Office вкладка Разработчик не показана по умолчанию, необходимо вывести ее на экран, выполнив указанные ниже действия.Because Office does not display the Developer tab by default, you must enable it by using the following procedure:

Включение вкладки «Разработчик»To enable the Developer tab

  1. На вкладке Файл выберите Параметры, чтобы открыть диалоговое окно Параметры.On the File tab, choose Options to open the Options dialog box.

  2. Выберите пункт Настроить ленту в левой части диалогового окна.Choose Customize Ribbon on the left side of the dialog box.

  3. В разделе Выбрать команды, расположенном слева в окне, выберите Часто используемые команды.Under Choose commands from on the left side of the dialog box, select Popular Commands.

  4. В разделе Настроить ленту, который находится справа в диалоговом окне, выберите Основные вкладки в раскрывающемся списке, а затем установите флажок Разработчик.Under Customize the Ribbon on the right side of the dialog box, select Main Tabs in the drop down list box, and then select the Developer checkbox.

  5. Нажмите кнопку OK.Choose OK.

Примечание

В Office 2007 показ вкладки Разработчик выполняется путем нажатия кнопки Office, выбора пункта Параметры, а затем установки флажка Показать вкладку «Разработчик» на ленте в категории Популярные диалогового окна Параметры.In Office 2007, you displayed the Developer tab by choosing the Office button, choosing Options, and then selecting the Show Developer tab in Ribbon check box in the Popular category of the Options dialog box.

После включения вкладки Разработчик можно легко найти кнопки Visual Basic и Макрос.After you enable the Developer tab, it is easy to find the Visual Basic and Macros buttons.

Рисунок 1. Кнопки на вкладке «Разработчик»Figure 1. Buttons on the Developer tab

Кнопки на вкладке "Разработчик"

Проблемы безопасностиSecurity issues

Для защиты документов Office от вирусов и вредоносных макросов не сохраняйте код макросов в стандартных документах Office со стандартным расширением файла.To protect Office users against viruses and dangerous macro code, you cannot save macro code in a standard Office document that uses a standard file extension. Следует сохранить код в файле с особым расширением.Instead, you must save the code in a file with a special extension. Например, сохраняйте макросы не в стандартном документе Word с расширением DOCX, а в специальном документе Word с поддержкой макросов и расширением DOCM.For example you cannot save macros in a standard Word document with a .docx extension; instead, you must use a special Word Macro-Enabled Document with a .docm extension.

При открытии DOCM-файла система безопасности Office все равно может запретить запуск макросов в документе, сообщая или не сообщая об этом.When you open a .docm file, Office security might still prevent the macros in the document from running, with or without telling you. Изучите параметры и настройки центра управления безопасностью во всех приложениях Office.Examine the settings and options in the Trust Center on all Office applications. По умолчанию макросы отключены, но пользователь оповещается об этом и может включить их.The default setting disables macro from running, but warns you that macros have been disabled and gives you the option to turn them back on for that document.

Можно указать специальные папки, в которых можно выполнять макросы, создав надежные расположения, надежные документы или надежных издателей.You can designate specific folders where macros can run by creating Trusted Locations, Trusted Documents, or Trusted Publishers. Самый универсальный способ — использовать надежных издателей. Этот способ подходит для работы с документами, у которых есть распространяемые вами цифровые подписи.The most portable option is to use Trusted Publishers, which works with digitally signed documents that you distribute. Чтобы получить дополнительные сведения о параметрах безопасности в определенном приложении Office, откройте диалоговое окно Параметры, а затем выберите Центр управления безопасностью и Параметры центра управления безопасностью.For more information about the security settings in a particular Office application, open the Options dialog box, choose Trust Center, and then choose Trust Center Settings.

Примечание

Некоторые приложения Office, такие как Outlook, сохраняют макросы по умолчанию в основном шаблоне на локальном компьютере.Some Office applications, like Outlook, save macros by default in a master template on your local computer. Хотя это позволяет уменьшить количество проблем с безопасностью на локальном компьютере при выполнении собственных макросов, для распространения своих макросов в этом случае потребуется стратегия развертывания. Although that strategy reduces the local security issues on your own computer when you run your own macros, it requires a deployment strategy if you want to distribute your macro.

Запись макросаRecording a macro

Если нажать кнопку Макрос на вкладке Разработчик, открывается диалоговое окно Макрос, которое предоставляет доступ к подпрограммам или макросам VBA, которые можно использовать из определенного документа или приложения.When you choose the Macro button on the Developer tab, it opens the Macros dialog box, which gives you access to VBA subroutines or macros that you can access from a particular document or application. Кнопка Visual Basic открывает редактор Visual Basic, где можно создавать и редактировать код VBA.The Visual Basic button opens the Visual Basic Editor, where you create and edit VBA code.

На вкладке Разработчик в Word и Excel также есть кнопка Запись макроса, которая автоматически создает код VBA, позволяющий воспроизводить ваши действия в приложении.Another button on the Developer tab in Word and Excel is the Record Macro button, which automatically generates VBA code that can reproduce the actions that you perform in the application. Запись макроса — это великолепное средство, которое можно использовать для изучения VBA.Record Macro is a terrific tool that you can use to learn more about VBA. Читая такой код, можно понять язык VBA и объединить знания пользователя и программиста Office.Reading the generated code can give you insight into VBA and provide a stable bridge between your knowledge of Office as a user and your knowledge as a programmer. Только помните о том, что этот код может быть запутанным, так как редактор макросов делает допущения насчет ваших намерений, которые не всегда точны.The only caveat is that the generated code can be confusing because the Macro editor must make some assumptions about your intentions, and those assumptions are not necessarily accurate.

Запись макросаTo record a macro
  1. Создайте книгу в Excel и откройте вкладку Разработчик на ленте.Open Excel to a new Workbook and choose the Developer tab in the ribbon. Нажмите кнопку Запись макроса и оставьте все параметры по умолчанию в диалоговом окне Запись макроса, в том числе имя Макрос1 и расположение Эта книга.Choose Record Macro and accept all of the default settings in the Record Macro dialog box, including Macro1 as the name of the macro and This Workbook as the location.

  2. Нажмите кнопку ОК, чтобы начать запись макроса.Choose OK to begin recording the macro. Обратите внимание, что текст кнопки изменяется на Остановить запись.Note how the button text changes to Stop Recording. Нажмите эту кнопку, когда выполните все записываемые действия.Choose that button the instant you complete the actions that you want to record.

  3. Выберите ячейку B1 и введите классическую первую строку программиста — Hello World.Choose cell B1 and type the programmer’s classic first string: Hello World. Прекратите ввод текста и посмотрите на кнопку Остановить запись. Она серая, так как Excel ждет, пока вы завершите ввод значения ячейки.Stop typing and look at the Stop Recording button; it is grayed out because Excel is waiting for you to finish typing the value in the cell.

  4. Выберите ячейку B2, чтобы завершить действие в ячейке B1, а затем нажмите кнопку Остановить запись.Choose cell B2 to complete the action in cell B1, and then choose Stop Recording.

  5. Выберите пункт Макросы на вкладке Разработчик, выберите макрос Макрос1, если он еще не выбран, и нажмите кнопку Изменить, чтобы просмотреть код Макрос1 в редакторе Visual Basic.Choose Macros on the Developer tab, select Macro1 if it is not selected, and then choose Edit to view the code from Macro1 in the Visual Basic Editor.

Рисунок 2. Код макроса в редакторе Visual BasicFigure 2. Macro code in Visual Basic Editor

Код макроса в редакторе Visual Basic

КодLooking at the code

Созданный макрос должен выглядеть указанным ниже образом.The macro that you created should look similar to the following code.

Sub Macro1()
'
' Macro1 Macro
'
'
    Range("B1").Select
    ActiveCell.FormulaR1C1 = "Hello World"
    Range("B2").Select
End Sub

Учтите схожие моменты с предыдущим примером кода, в котором выбирается ячейка A1, и отличия от него.Be aware of the similarities to the earlier code snippet that selected text in cell A1, and the differences. В этом примере кода выбирается ячейка B1, а затем строка «Hello World» записываются в активную ячейку.In this code, cell B1 is selected, and then the string «Hello World» is applied to the cell that has been made active. Кавычки вокруг текста обозначают строковое значение (в противоположность числовому значению).The quotes around the text specify a string value as opposed to a numeric value.

Вспомните, что для отображения кнопки Остановить запись нужно было выбрать ячейку B2.Remember how you chose cell B2 to display the Stop Recording button again? Это действие также задается в строке кода.That action shows up as a line of code as well. Средство записи макроса записывает каждое нажатие клавиши.The macro recorder records every keystroke.

Строки кода, начинающиеся с апострофа и выделенные зеленым цветом — это комментарии, которые поясняют код или напоминают другим программистам его предназначение.The lines of code that start with an apostrophe and colored green by the editor are comments that explain the code or remind you and other programmers the purpose of the code. VBA игнорирует любую строку или ее часть, которые начинаются с одинарной кавычки.VBA ignores any line, or portion of a line, that begins with a single quote. Написание понятных и подходящих комментариев в коде очень важно, но в этой статье данная тема не затрагивается.Writing clear and appropriate comments in your code is an important topic, but that discussion is out of the scope of this article. В следующих ссылках на этот код в данной статье эти четыре строки комментариев отсутствуют.Subsequent references to this code in the article do not include those four comment lines.

Когда средство записи макроса генерирует код, оно использует сложный алгоритм для определения нужных методов и свойств.When the macro recorder generates the code, it uses a complex algorithm to determine the methods and the properties that you intended. Если данное свойство незнакомо, пользователю могут помочь множество ресурсов.If you do not recognize a given property, there are many resources available to help you. Например, в записанном макросе средство записи макроса сгенерировало код, который ссылается на свойство FormulaR1C1.For example, in the macro that you recorded, the macro recorder generated code that refers to the FormulaR1C1 property. Не знаете, что это значит?Not sure what that means?

Примечание

Помните, что объект Application используется во всех макросах VBA.Be aware that Application object is implied in all VBA macros. В записанном коде объект Application.The code that you recorded works with Application. используется в начале каждой строки.at the beginning of each line.

Использование справки разработчикаUsing Developer Help

Выберите FormulaR1C1 в записанном макросе и нажмите F1.Select FormulaR1C1 in the recorded macro and press F1. Система справки запустит быстрый поиск, определит, что нужные темы есть в разделе «Разработчик» справки Excel, и укажет свойство FormulaR1C1.The Help system runs a quick search, determines that the appropriate subjects are in the Excel Developer section of the Excel Help, and lists the FormulaR1C1 property. Можно щелкнуть ссылку, чтобы прочитать описание свойства, но прежде обратите внимание на ссылку Справочник по объектной модели Excel в нижней части окна.You can choose the link to read more about the property, but before you do, be aware of the Excel Object Model Reference link near the bottom of the window. Щелкните ее, чтобы просмотреть список объектов, которые Excel использует в объектной модели для описания листов и их компонентов.Choose the link to view a long list of objects that Excel uses in its object model to describe the Worksheets and their components.

Выберите любой из них, чтобы просмотреть свойства и методы, которые применяются к этому объекту, а также ссылки на другие связанные с ними параметры.Choose any one of those to see the properties and methods that apply to that particular object, along with cross references to different related options. Многие записи справки содержат короткие примеры кода, которые могут быть полезны.Many Help entries also have brief code examples that can help you. Например, можно перейти по ссылкам в описании объекта Borders, чтобы узнать, как задать границу в VBA.For example, you can follow the links in the Borders object to see how to set a border in VBA.

Worksheets(1).Range("A1").Borders.LineStyle = xlDouble

Редактирование кодаEditing the code

Код с границами отличается от записанного макроса.The Borders code looks different from the recorded macro. В объектной модели есть несколько способов адресации любого объекта (ячейки A1 в этом примере), что может вызывать затруднения.One thing that can be confusing with an object model is that there is more than one way to address any given object, cell A1 in this example.

Иногда самый лучший способ изучить программирование — вносить небольшие изменения в определенный рабочий код и смотреть, что получается.Sometimes the best way to learn programming is to make minor changes to some working code and see what happens as a result. Попробуйте сделать это сейчас.Try it now. Откройте Макрос1 в редакторе Visual Basic и измените код указанным ниже образом.Open Macro1 in the Visual Basic Editor and change the code to the following.

Sub Macro1()
    Worksheets(1).Range("A1").Value = "Wow!"
    Worksheets(1).Range("A1").Borders.LineStyle = xlDouble
End Sub

Совет

Используйте копирование и вставку, где это возможно, чтобы избежать опечаток.Use Copy and Paste as much as possible when working with code to avoid typing errors.

Не нужно сохранять код, чтобы запустить его, поэтому вернитесь в документ Excel, нажмите кнопку Макросы на вкладке Разработчик, выберите Макрос1 и нажмите кнопку Выполнить.You do not need to save the code to try it out, so return to the Excel document, choose Macros on the Developer tab, choose Macro1, and then choose Run. Теперь в ячейке A1 есть текст Wow!,Cell A1 now contains the text Wow! а вокруг него размещена граница из двойных линий.and has a double-line border around it.

Рисунок 3. Результаты первого макросаFigure 3. Results of your first macro

Результаты первого макроса

Только что вы записали макрос, прочитали документацию по объектной модели и написали простую программу на VBA, которая что-то делает.You just combined macro recording, reading the object model documentation, and simple programming to make a VBA program that does something. Поздравляем!Congratulations!

Программа не работает?Did not work? Читайте дальше и узнайте о методах отладки в VBA.Read on for debugging suggestions in VBA.

Советы и приемы программированияProgramming tips and tricks

Начните с примеровStart with examples

Сообщество программистов на VBA очень большое; поиск в Интернете почти всегда может дать пример кода на VBA, который выполняет почти те же действия, которые необходимы вам.The VBA community is very large; a search on the Web can almost always yield an example of VBA code that does something similar to what you want to do. Если не удается найти хороший пример, попробуйте разбить задачу на более мелкие модули и выполнить поиск каждого из них. Или попробуйте найти более общую, но аналогичную задачу.If you cannot find a good example, try to break the task down into smaller units and search on each of those, or try to think of a more common, but similar problem. Если начать с примеров, это может сэкономить много времени.Starting with an example can save you hours of time.

Это не означает, что в Интернете всегда доступен бесплатный и качественный код.That does not mean that free and well-thought-out code is on the Web waiting for you to come along. В действительности, в найденных программах могут быть ошибки.In fact, some of the code that you find might have bugs or mistakes. Идея в том, что примеры из Интернета или документации по VBA помогают начать работу.The idea is that the examples you find online or in VBA documentation give you a head start. Помните, что для изучения программирования требуется время и умственные усилия.Remember that learning programming requires time and thought. Перед тем как использовать очередное решение для решения проблемы, спросите себя, подходит ли VBA для этого.Before you get in a big rush to use another solution to solve your problem, ask yourself whether VBA is the right choice for this problem.

Упрощение задачиMake a simpler problem

Программирование может быстро стать сложной задачей.Programming can get complex quickly. Важно, особенно для новичка, разбивать задачу самые маленькие логические модули, затем отдельно писать и проверять каждую часть.It is critical, especially as a beginner, that you break the problem down to the smallest possible logical units, then write and test each piece in isolation. Если перед вами слишком много кода и вы запутались, остановитесь и отложите задачу.If you have too much code in front of you and you get confused or muddled, stop and set the problem aside. Когда вы к ней вернетесь, скопируйте небольшую часть задачи в новый модуль, разберитесь с ней, напишите работающий код и проверьте его.When you come back to the problem, copy out a small piece of the problem into a new module, solve that piece, get the code working, and test it to ensure that it works. Затем займитесь следующей частью.Then move on to the next part.

Ошибки и отладкаBugs and debugging

Существует два основных вида ошибок программирования: синтаксические ошибки, которые нарушают грамматические правила языка программирования и ошибки времени выполнения, которые синтаксически правильны, но вызывают сбой, когда VBA пытается выполнить код.There are two main types of programming errors: syntax errors, which violate the grammatical rules of the programming language, and run-time errors, which look syntactically correct, but fail when VBA attempts to execute the code.

Хотя исправлять синтаксические ошибки неприятно, их легко обнаружить; редактор Visual Basic выдает сопровождающееся звуковым сигналом сообщение об ошибке и меняет цвет текста, если при вводе кода найдена синтаксическая ошибка.Although they can be frustrating to fix, syntax errors are easy to catch; the Visual Basic Editor beeps and flashes at you if you type a syntax error in your code.

Например, в VBA строковые значения должны быть заключены в двойные кавычки.For example, string values must be surrounded by double quotes in VBA. Чтобы узнать, что происходит при использовании одинарных кавычек, вернитесь в редактор Visual Basic и замените строку «Wow!»To find out what happens when you use single quotes instead, return to the Visual Basic Editor and replace the «Wow!» на ‘Wow!’string in the code example with ‘Wow!’ (т. е. слово Wow в одинарных кавычках).(that is, the word Wow enclosed in single quotes). Если выбрать следующую строку, среагирует редактор Visual Basic.If you choose the next line, the Visual Basic Editor reacts. Сообщение об ошибке «Ошибка компиляции. Ожидается: выражение» не особо помогает, но строка, содержащая ошибку, становится красной, что говорит о синтаксической ошибке в этой строке. В результате программа не будет запускаться.The error «Compile error: Expected: expression» is not that helpful, but the line that generates the error turns red to tell you that you have a syntax error in that line and as a result, this program will not run.

Нажмите кнопку ОК и измените текст на «Wow!».Choose OK and change the text back to»Wow!».

Ошибки времени выполнения обнаружить сложнее, так как синтаксически все выглядит правильно, но при попытке выполнить код возникает сбой.Runtime errors are harder to catch because the programming syntax looks correct, but the code fails when VBA tries to execute it.

Например, откройте редактор Visual Basic и измените имя свойства Value на ValueX в макросе, намеренно вызывая ошибку времени выполнения, так как у объекта Range нет свойства ValueX.For example, open the Visual Basic Editor and change the Value property name toValueX in your Macro, deliberately introducing a runtime error since the Range object does not have a property called ValueX. Вернитесь к документу Excel, откройте диалоговое окно Макрос и запустите Макрос1 еще раз.Go back to the Excel document, open the Macros dialog box and run Macro1 again. Появится сообщение Visual Basic, в котором описывается ошибка во время выполнения: «Объект не поддерживает это свойство или метод».You should see a Visual Basic message box that explains the run-time error with the text, «Object doesn’t support this property of method.» Хотя текст и так понятен, нажмите кнопку Отладка для получения дополнительных сведений.Although that text is clear, choose Debug to find out more.

После возвращения в редактор Visual Basic будет включен специальный режим отладки, в котором желтым цветом выделяется строка кода с ошибкой.When you return to the Visual Basic Editor, it is in a special debug mode that uses a yellow highlight to show you the line of code that failed. Как и ожидалось, желтым выделена строка со свойством ValueX.As expected, the line that includes the ValueX property is highlighted.

Можно внести изменения в исполняемый код VBA, поэтому измените ValueX на Value и нажмите маленькую зеленую кнопку воспроизведения в меню Отладка.You can make changes to VBA code that is running, so change ValueX back to Value and choose the little green play button underneath the Debug menu. Программа должна запуститься без ошибок.The program should run normally again.

Будет полезно узнать, как использовать отладчик для решения более сложных задач.It is a good idea to learn how to use the debugger more deliberately for longer, more complex programs. Хотя бы изучите, как устанавливать точки останова, чтобы прекращать выполнение программы там, где нужно взглянуть на код, как добавлять контрольные значения, чтобы просматривать значения разных переменных и свойств во время выполнения кода, и как пошагово, строка за строкой, выполнять код.At a minimum, learn a how to set break-points to stop execution at a point where you want to take a look at the code, how to add watches to see the values of different variables and properties as the code runs, and how to step through the code line by line. Все эти возможности доступны в меню Отладка, а серьезный пользователь отладчика обычно запоминает соответствующие сочетания клавиш.These options are all available in the Debug menu and serious debugger users typically memorize the accompanying keyboard shortcuts.

Правильное использование справочных материаловUsing reference materials well

Чтобы открыть справочник разработчика, встроенный в справку Office, откройте справку в любом приложении Office, выбрав вопросительный знак на ленте или нажав клавишу F1.To open the Developer Reference that is built into Office Help, open the Help reference from any Office application by choosing the question mark in the ribbon or by pressing F1. Затем справа от кнопки Поиск выберите стрелку раскрывающегося меню для фильтрации содержимого.Then, to the right of the Search button, choose the dropdown arrow to filter the contents. Выберите Справочник разработчика.Choose Developer Reference. Если на левой панели не отображается содержание, щелкните маленький значок в виде книги, чтобы открыть его, и раскройте справочник по объектной модели.If you do not see the table of contents in the left panel, choose the little book icon to open it, and then expand the Object Model Reference from there.

Рисунок 5. Фильтрация справки разработчика работает во всех приложениях OfficeFigure 5. Filtering on developer Help applies to all Office applications

Фильтрация справки разработчика применяется ко всем приложениям Office

Время, потраченное на исследование справочника по объектной модели, быстро окупится.Time spent browsing the Object Model reference pays off. Когда вы изучите базовый синтаксис VBA и объектную модель приложения Office, с которым вы работаете, можно перейти от догадок к методичному программированию.After you understand the basics of VBA syntax and the object model for the Office application that you are working with, you advance from guesswork to methodical programming.

Конечно, центр разработки Microsoft Office — это прекрасный портал со статьями, советами и форумами сообщества.Of course the Microsoft Office Developer Center is an excellent portal for articles, tips, and community information.

Поиск в форумах и группахSearching forums and groups

Рано или поздно все программисты попадают в ситуацию, когда невозможно решить какую-либо проблему, даже прочитав все найденные статьи и проведя много бессонных ночей в поисках ее решения.All programmers get stuck sometimes, even after reading every reference article they can find and losing sleep at night thinking about different ways to solve a problem. К счастью, в Интернете появилось сообщество разработчиков, которые помогают друг другу при решении задач программирования.Fortunately, the Internet has fostered a community of developers who help each other solve programming problems.

Если поискать в Интернете «форум разработчиков Office», можно найти несколько таких групп обсуждений.Any search on the Web for «office developer forum» reveals several discussion groups. Можно поискать «разработка Office» или описание проблемы и найти нужные форумы, блоги и статьи.You can search on «office development» or a description of your problem to discover forums, blog posts, and articles as well.

Если сделано все, что возможно, для решения проблемы, не бойтесь задать вопрос на форуме разработчиков.If you have done everything that you can to solve a problem, do not be afraid to post your question to a developers forum. В таких форумах приветствуются вопросы от новичков-программистов, и многие опытные разработчики с радостью помогут им.These forums welcome posts from newer programmers and many of the experienced developers are glad to help.

Далее описаны некоторые вопросы этикета, которых следует придерживаться при публикации на форуме разработчиков.The following are a few points of etiquette to follow when you post to a developer forum:

  • Перед публикацией поищите на сайте часто задаваемые вопросы или инструкции, которые следует соблюдать.Before you post, look on the site for an FAQ or for guidelines that members want you to follow. Убедитесь, что публикация соответствует этим инструкциям и расположена в нужном разделе форума.Ensure that you post content that is consistent with those guidelines and in the correct section of the forum.

  • Представьте ясный и полный пример кода, и если он является частью более сложного кода, укажите это.Include a clear and complete code sample, and consider editing your code to clarify it for others if it is part of a longer section of code.

  • Опишите проблему четко и кратко и укажите действия, выполненные для решения проблемы.Describe your problem clearly and concisely, and summarize any steps that you have taken to solve the problem. Не спешите и напишите вопрос, как можно лучше, даже если вы взволнованны или вам не хватает времени.Take the time to write your post as well as you can, especially if you are flustered or in a hurry. Опишите ситуацию так, чтобы читатели поняли ее после первого прочтения.Present the situation in a way that will make sense to readers the first time that they read the problem statement.

  • Будьте вежливы и выражайте благодарность за все ответы.Be polite and express your appreciation.

Более подробное изучение программированияGoing further with programming

Хотя это короткая статья, и в ней представлена лишь малая часть сведений о VBA и программировании, надеюсь, ее будет достаточно для начала.Although this article is short and only scratches the surface of VBA and programming, it is hopefully enough to get you started.

В этом разделе кратко описываются некоторые другие важные темы.This section briefly discusses a few more key topics.

ПеременныеVariables

В примерах в этой статье использовались объекты, которые уже создало приложение.In the simple examples in this article you manipulated objects that the application had already created. Иногда требуется создать собственные объекты для хранения значений или ссылок на другие объекты.You might want to create your own objects to store values or references to other objects for temporary use in your application. Они называются переменными.These are called variables.

Чтобы использовать переменную в VBA, необходимо сообщить VBA, какой тип представляет переменная, с помощью оператора Dim.To use a variable in VBA, must tell VBA which type of object the variable represents by using the Dim statement. Затем задается значение переменной, и она используется для установки других переменных и свойств.You then set its value and use it to set other variables or properties.

    Dim MyStringVariable As String
    MyStringVariable = "Wow!"
    Worksheets(1).Range("A1").Value = MyStringVariable

Ветвление и циклыBranching and looping

В примерах простых программ в этой статье код выполняется строка за строкой, сверху вниз.The simple programs in this article execute one line at a time, from the top down. Реальные возможности программирования состоят в том, что можно определять, какие строки кода выполнять, в зависимости от одного или нескольких указанных условий. The real power in programming comes from the options that you have to determine which lines of code to execute, based on one or more conditions that you specify. Эти возможности можно расширить, если повторять операцию нужное количество раз.You can extend those capabilities even further when you can repeat an operation many times. Например, приведенный ниже пример кода расширяет Макрос1.For example, the following code extends Macro1.

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! in cell A1"
    End If
End Sub

Введите или вставьте код в редакторе Visual Basic и запустите его.Type or paste the code into the Visual Basic Editor and then run it. Следуйте инструкциям в появившемся окне сообщений и измените текст в ячейке A1 с «Wow!»Follow the directions in the message box that appears and change the text in cell A1 from Wow! на «Yes!»,to Yes! а затем выполните программу еще раз, чтобы ознакомиться с возможностями циклов.and run it again to see the power of looping. В этом примере кода показаны переменные, ветвление и циклы.This code snippet demonstrates variables, branching and looping. Просмотрите его внимательно после выполнения и попробуйте определить, что происходит после выполнения каждой строки.Read it carefully after you see it in action and try to determine what happens as each line executes.

Все приложения на вкладке «Мой Office»: примеры кодаAll of my Office applications: example code

Вот несколько скриптов, которые можно попробовать. Каждый из них решает реальную задачу Office.Here are a few scripts to try; each solves a real-world Office problem.

Создание электронной почты в OutlookCreate an email in Outlook

Sub MakeMessage()
    Dim OutlookMessage As Outlook.MailItem
    Set OutlookMessage = Application.CreateItem(olMailItem)
    OutlookMessage.Subject = "Hello World!"
    OutlookMessage.Display
    Set OutlookMessage = Nothing
End Sub

Помните, что бывают случаи, когда нужно автоматизировать электронную почту в Outlook или использовать шаблоны.Be aware that there are situations in which you might want to automate email in Outlook; you can use templates as well.

Удаление пустых строк на листе ExcelDelete empty rows in an Excel worksheet

Sub DeleteEmptyRows()
    SelectedRange = Selection.Rows.Count
    ActiveCell.Offset(0, 0).Select
    For i = 1 To SelectedRange
        If ActiveCell.Value = "" Then
            Selection.EntireRow.Delete
        Else
            ActiveCell.Offset(1, 0).Select
        End If
    Next i
End Sub

Помните, что можно выбрать столбец ячеек и запустить этот макрос, чтобы удалить все строки в выбранном столбце с пустыми ячейками.Be aware that you can select a column of cells and run this macro to delete all rows in the selected column that have a blank cell.

Удаление пустых текстовых полей в PowerPointDelete empty text boxes in PowerPoint

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

Имейте в виду, что в коде выполняется цикл по всем слайдам и удаляются все текстовые поля, в которых нет текста.Be aware that this code loops through all of the slides and deletes all text boxes that do not have any text. Переменная-счетчик уменьшается, а не увеличивается, так как при каждом удалении объекта он удаляется из коллекции, что уменьшает счетчик.The count variable decrements instead of increments because each time the code deletes an object, it removes that object from the collection, which reduces the count.

Копирование контакта из Outlook в WordCopy a contact from Outlook to Word

Sub CopyCurrentContact()
   Dim OutlookObj As Object
   Dim InspectorObj As Object
   Dim ItemObj As Object
   Set OutlookObj = CreateObject("Outlook.Application")
   Set InspectorObj = OutlookObj.ActiveInspector
   Set ItemObj = InspectorObj.CurrentItem
   Application.ActiveDocument.Range.InsertAfter (ItemObj.FullName & " from " & ItemObj.CompanyName)
End Sub

Обратите внимание, что этот код копирует открытый контакт из Outlook в открытый документ Word.Be aware that this code copies the currently open contact in Outlook into the open Word document. Этот код работает, только если в Outlook открыт контакт.This code only works if there is a contact currently open for inspection in Outlook.

Поддержка и обратная связьSupport and feedback

Есть вопросы или отзывы, касающиеся Office VBA или этой статьи?Have questions or feedback about Office VBA or this documentation? Руководство по другим способам получения поддержки и отправки отзывов см. в статье Поддержка Office VBA и обратная связь.Please see Office VBA support and feedback for guidance about the ways you can receive support and provide feedback.



Работа с макросами VBA в Excel для веб-страниц

Несмотря на то, что вы не можете создавать, запускать и редактировать макросы VBA (Visual Basic для приложений) в Excel в Интернете, вы можете открывать и редактировать книги, содержащие макросы. Существующие макросы останутся в книге, и вы можете открыть ее в классическом приложении Excel, чтобы просмотреть и изменить макросы.



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

Если у вас есть классическое приложение Excel, вы можете использовать его для работы с макросами. Над лентой выберите команду Открыть в классическом приложении, а затем следуйте инструкциям, приведенным в статье Создание, выполнение, изменение или удаление макроса.


Удаление макроса

Если открыть книгу, содержащую макросы, сообщения от Excel в Интернете не будут видны. Если вы знаете, что книга включает макросы и вам нужно ее удалить, это необходимо сделать в классическом приложении Excel. Следуйте указаниям, приведенным в статье Создание, выполнение, изменение или удаление макроса.

Знаете ли вы?

Если у вас нет подписки на Microsoft 365 или последней версии Excel, попробуйте использовать ее бесплатно.





Примечание: 
Эта страница переведена автоматически, поэтому ее текст может содержать неточности и грамматические ошибки. Для нас важно, чтобы эта статья была вам полезна. Была ли информация полезной? Для удобства также приводим ссылку на оригинал (на английском языке).

Что такое VBA? Что такое макросы VBA? Что такое надстройки?

На страницах этого сайта вы найдете ответы на вопросы «Что такое VBA?», «Что такое макросы VBA?», «Что такое надстройки?», а также найдете учебные примеры и готовые макросы и надстройки, позволяющие сделать вашу работу на компьютере более комфортной. И более того, сами научитесь основным действиям, необходимым для работы с макросами и надстройками, такими как запись, просмотр, редактирование, копирование, удаление и так далее. 

Что такое VBA?

Итак, VBA – это сокращение от слов Visual Basic for Applications. VBA – это слегка упрощенная версия языка программирования Visual Basic, которую поддерживают приложения Microsoft Office.

Кроме того VBA встраивается и в другие программные продукты, такие как AutoCAD, SolidWorks, CorelDRAW, 3D Studio Max,  и многие другие. Особенностью VBA является удобство при первом знакомстве с программированием, так как в наиболее используемых приложениях Microsoft Office имеется редактор VB (Visual Basic Editor), а также макрорекордер – средство кодирования действий пользователя для последующего их повторения. Кроме того, эти инструменты можно с успехом использовать для самостоятельного обучения программированию, «записывая» многие свои действия с помощью макрорекордера, а затем просматривая и корректируя результирующий код.

Что такое макросы VBA?

Таким образом, последовательности команд, записанных с помощью макрорекордера, либо вручную в редакторе VB, называются макрокомандами, либо сокращенно – просто макросами. Макрос VBA — это макрос, написанный на языке Visual Basic for Applications. Применительно к тематике программных приложений под словом макрос всегда имеется в виду макрокоманда.

При помощи макросов можно создавать пользовательские меню, диалоговые окна, а также панели инструментов, которые могут существенно изменить интерфейс всем известных приложений Word и Excel.

Что такое надстройки?

Надстройки – это программы, добавляющие в приложения дополнительные возможности.

Говоря обычным языком, надстройка – это особого типа файл, в котором могут содержаться различные сведения о константах, макросах, пользовательских формах и т.д.  Надстройка — это также удобный способ хранения и распространения программного кода макроса (макросов). Файлы надстроек для Excel, имеют как правило расширения .xla/.xlam, надстройки для Word представляют собой глобальные шаблоны и имеют расшерения .dot/.dotm. Для PowerPoint — это pptm-файлы. 

Редактор Visual Basic – не только средство редактирования кода, но и средство отладки кода, так как дает пользователям возможность в интерактивном режиме проверить действие любой синтаксической конструкции.

Если Вы попали на страницы этого сайта, то скорее всего Вы уже знакомы с тем, что такое MS Office в целом и MS Excel в частности. Остановимся на наиболее популярных приложениях пакета — Word и Excel, так как именно для этих приложений уже существует наибольшее количество готовых макросов и надстроек, но программирование можно использовать и в других приложениях пакета.

Microsoft Word – один из наиболее популярных текстовых редакторов, который позволяет набирать, редактировать, форматировать и распечатывать текст.

Microsoft Excel – наиболее популярное приложение для работы с таблицами и табличными данными, совмещающая в себе систему обработки числовых данных, средства для построения диаграмм и обработки электронных таблиц.

Проще говоря, Excel – это удобная табличная форма с возможностями калькулятора, позволяющего выполнять интенсивные расчеты на основе имеющихся данных. О том как работать с этими приложениями написано немало литературы, которую можно найти и на просторах интернета и на полках книжных магазинов. Если же Вы уже освоили стандартные возможности офисных приложений и посчитали, что этого недостаточно для решения Ваших задач, то давайте перейдем к вопросам «Что такое VBA?», «Что такое Макросы?», «Что такое надстройки» и «Как всем этим пользоваться?». Конечно, и Word, и Excel предоставляют достаточно широкий набор функций для выполнения самых разнообразных задач, но все же знание и использование макросов VBA дает такие преимущества, которые невозможно переоценить.

Для чего нужны макросы и надстройки?

Не секрет, что компьютеры гораздо лучше людей приспособлены для выполнения повторяющихся задач, поэтому использование макросов существенно увеличивает скорость и значительно повышает точность работы. Использование макросов является настоящим спасением от часто повторяющейся, рутинной работы, с которой каждый, наверное, хоть раз да сталкивался. Не буду пытаться обучить Вас тонкостям написания макросов, сделаю с Вами только самые первые шаги в этом направлении и скажу, что уже многие умные головы посвятили этому свои интернет-сайты, книги и различные самоучители и что, как говорится, «не так страшен черт, как его малюют» )). При определенных усилиях Вы сможете самостоятельно записать макросы либо даже написать свои собственные процедуры, а на этом сайте вы сможете найти достаточное количество готовых решений, если не хотите тратить свое время на то, чтобы разбираться в основах программирования в VBA.

Как с помощью макроса открыть файл в Excel?

Подробно ознакомимся как открыть файл макросом в Excel и изучим особенности параметров открытия файла.

Если нам необходимо неоднократно открывать или закрывать файл в Excel, то использование макроса существенно ускоряет и упрощает данную задачу.

Макрос открытия файла в Excel

Для начала запишем полный путь с названием файла, который и будем открывать с помощью макроса, например, в ячейке A1 на Листе 1 (название типа C:\Documents and Settings\Открытие_файла.xlsx).
Далее заходим в редактор VBA (нажимаем комбинацию клавиш Alt + F11) и записываем в модуль следующий макрос:

Sub Open_file() ‘Макрос открытия файла
FilePath = Sheets(«Лист1»).Cells (1,1) ‘Забираем полный путь к файлу из ячейки A1 на листе «Лист1″
Workbooks.Open Filename:= FilePath ‘Открытие файла
End Sub



Sub Open_file()      ‘Макрос открытия файла

    FilePath = Sheets(«Лист1»).Cells (1,1) ‘Забираем полный путь к файлу из ячейки A1 на листе «Лист1»

    Workbooks.Open Filename:= FilePath ‘Открытие файла

End Sub

Можно также прописать дополнительные параметры открытия файла, рассмотрим основные из них:

  • UpdateLinks — обновление внешних ссылок в файле;
  • ReadOnly — открытие файла в режиме чтения;
  • Password — пароль для открытия защищенной книги;
  • WriteResPassword — пароль для внесения изменений в защищенную от записи книгу.

Sub Open_file()
FilePath = Sheets(«Лист1»).Cells (1,1)
Workbooks.Open Filename:= FilePath, UpdateLinks:=False, ReadOnly:=True ‘Открытие файла под чтением без обновления ссылок
End Sub



Sub Open_file()

    FilePath = Sheets(«Лист1»).Cells (1,1)

    Workbooks.Open Filename:= FilePath, UpdateLinks:=False, ReadOnly:=True ‘Открытие файла под чтением без обновления ссылок

End Sub

Например, данный макрос будет открывать файл в режиме чтения (т.е. без возможности вносить изменения в текущую версию) без обновления внешних ссылок в файле.

Удачи вам и до скорой встречи на страницах блога Tutorexcel.ru!

Поделиться с друзьями:
Поиск по сайту:

что это такое, как пользоваться объектами и применить макросы

Первая версия Excel появилась в 1985 году. С этого времени ПО продолжать развиваться, в результате чего появился vba excel. Что это такое и для чего можно использовать, стоит рассмотреть более подробно.

Что это такое

При создании программы Excel использовался специальный технический язык Visual Basic for Application. Первоначально его устанавливают в процессор Microsoft. Технические специалисты отмечают, что данный язык легко изучить и использовать в работе.

Однако существует нюанс, о котором должен знать каждый пользователь: не все версии могут быть совместимы. Это связано с тем, что функционально VBA связана с новой версией продукта, при этом в старых программах таких возможностей нет. Кроме того, код открыт для посторонних пользователей, поэтому его легко изменить. Однако посредством IBM Lotus Symphony можно задать комбинацию пароля, чтобы просматривать документы смог только один пользователь.

Объекты, коллекции, свойства и методы

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

  • Ячейка
  • Лист
  • Созданная книга
  • Выбранный диапазон.

Все объекты создают определенную иерархию, в которой подчиняются друг другу. Имеющийся Application должен соответствовать продукту Excel. Так, например, чтобы использовать определенную ячейку, пользователь должен задать определенный путь к ней.

Коллекция – это группа объектов, принадлежащих к тому же классу с форматом записи ChartObjects. Отдельные составляющие также принадлежат категории объектов.

Еще одно понятие, с которым важно ознакомиться, это «Свойства». Каждый объект имеет обязательную характеристику. Для Range, как правило, Value и Formula.

Методы – это задаваемые команды, которые требуется осуществить пользователю. Если требуется заполнить команду в форме VBA, то в обязательном порядке нужно проставлять точки, отделяя объект. В качестве примера: Cells (1,2).Select. Данная команда предполагает, что требуется выбрать ячейку под номером 1.2. Если значение было задано неверно или потребуется удалить все содержимое ячейки, то необходимо задать команду Selection.ClearContents.

Stop Recording

Как начать этим пользоваться

Для начала необходимо создать файл в формате Excel и сохранить на рабочем столе. Важно, чтобы файл поддерживал макросы. Далее нужно перейти к VB. Для этого потребуется зажать комбинацию из клавишей «Alt+F1». Потом требуется следовать инструкции:

  • Рядом с Excel в верхней части можно найти специальное меню;
  • Из перечисленных функций выбрать «Mudule»;
  • Сохранить и нажать на изображение с надписью «floppy disk»;
  • Вписываем код.

Формат кодировки должен выглядеть в таком формате: Sub program-‘код-End Sub.

Внимание: строка, в которой должен прописываться код будет выделена зеленым цветом. Перед тем, как прописывать кодировку, крайне важно поставить апостроф. Он означает, что после шифра должен проставляться определенный комментарий.

Это все, что понадобиться, чтобы сформировать инструмент VBA. Для пользователей, которые имеют представление о том, как использовать Visual Basic, весь процесс займет минимум времени. Но процесс также не предполагает сложностей для тех пользователей, которые ранее не сталкивались с решением подобной задачи.

Макросы в Excel

Макросом называют специальный код, который записывается на специальном языке VBA. Их можно создавать в ручном или автоматическом режиме. Для этого потребуется использовать специальный макроредактор.

Программа, которая записывает каждое действие, произведенное в программе Excel, преобразует их в специальный язык VBA. Код, который создается посредством макрорекодера, легко поддается редактированию и удобен в использовании. Важно отметить, что макрос можно использовать неограниченное количество раз. Даже если пользователь не знает, каким образом нужно обращаться с VBA, он может максимально автоматизировать весь процесс.

Чтобы самостоятельно создать макрос, рекомендуется использовать следующую инструкцию:

  • Кликнуть правой кнопкой мыши на созданную ленту и жать на функцию настройки. С его помощью можно открыть параметры диалогового окна:

Настройка ленты

  • В открывшемся окне появится параметр настройки ленты. В правой части находятся основные функции, где потребуется поставить галочку напротив разработчика:

Разработчик

  • Подтвердить действие, нажимая кнопку «ОК».

Если все действия выполнены в правильной последовательности, в основной меню должно появиться дополнительное меню Разработчик, как указано на скриншоте:

Дополнительное меню

Чтобы воспользоваться расширенными функциями таблицы Excel, стоит попробовать самостоятельно записать макрос. Он будет самостоятельно выбирать ячейку и формировать в ней заданный текст. Для этого потребуется сделать следующие шаги:

  • Перейти в созданную вкладку разработчика;
  • В меню кода выбрать функцию записи. Должно открыться отдельное окно

Запись макроса

  • В окне записи потребуется задать имя для будущего макроса. Однако важно отметить, что важно выполнить несколько правил, чтобы правильно задать имя: нельзя использовать пробелы. Поэтому лучше задавать слитное название, даже если оно состоит из двух слов. Также разрешается использовать нижний дефис.

Имя макроса

  • Если возникает необходимость, то можно задать комбинацию из клавиш. В таком случае нужно одновременно зажать следующее сочетание: «Ctrl+Shift+N». Важно запомнить, что данная комбинация при использовании способна отменить абсолютно любые заданные действия посредством горячих клавиш. Если ранее для автоматического сохранения использовалось сочетание «Ctrl+S», то более для этой функции его нельзя использовать.

Сочетание клавиш

  • Перед тем, как сохранить документ, нужно проверить, правильно ли задана опция. Это необходимо для того, чтобы удостовериться в том, что макрос является составляющей выбранной книги. Он будет присутствовать даже при автоматическом сохранении или если потребуется с кем-то поделиться файлом.

Сохранить в

  • Как дополнение можно придумать описание к файлу. Чаще всего это требуется, если пользователь планирует создать несколько макросов подряд, чтобы в будущем не запутаться, какой из них за что отвечает;
  • Остается нажать «OK». После этого макрос начнет автоматически записывать информацию в книге. Если нужно остановить запись, то кликаем по соответствующей кнопке рядом с меню разработчика;
  • Выбираем другую ячейку, например А2;
  • Вводим любой текст и нажимает кнопу «Enter»
  • Далее приостанавливаем запись.

Остановить запись

На этом все действия выполнены и остается использовать макрос при необходимости. Стоит отметить, что с его помощью каждый пользователь сможет понять, каким образом устроен макрорекодер.

Чтобы ознакомиться с полученными результатами, достаточно перейти в VB в Excel:

  • Открыть вкладку разработчика
  • В меню кодировки открыть Visual Basic.

Чтобы перейти к кодировке VBA или его редактор, можно использовать комбинацию из клавиш Alt и F11.  Для ознакомления, каким образом выглядит сам редактор, представлен следующий скриншот:

Меню Visual Basic

Когда записывается новый макрос, должны происходить следующие изменение:

  • Появление нового модуля
  • Появление набранного названия
  • Добавляется новая функция.

Чтобы показалось окно ввода, остается дважды кликнуть на модуль, чтобы появилась следующая запись, как показано на скриншоте:

Важно принять к сведению, что самостоятельно записанный код эффективен в определенных областях применения (финансовой или математической). Кроме того, зачастую макрорекодер может к имеющемуся инструментарию предлагать совершенно новые и ненужные функции.

Функции VBA

На примере инструкций, которые были приведены ранее, можно сделать вывод о том, что использование VBA и макросов не предполагает больших сложностей. Общее количество функций, которые были созданы специально для программирования на языке VBA, составляет 160 возможностей. Все функции подразделяются на несколько групп:

  • Математическая. Применяя ее для аргумента, можно вычислять косинусы и логарифмы, что чаще всего требуется для студентов технических вузов и занимающихся программированием. Функция избавляет от необходимости вести математические подсчеты вручную и ускоряет процесс;
  • Финансовая. Данная функция благодаря наличию помогает запускать программирование для финансовых операций. Эти опции помогут составлять грамотный финансовый и бухгалтерский учет;
  • Работа с массивами посредством L,U Bound, Array, IsArray;
  • Отдельная функция VBA для ведения строк. Стоит отметить, что группа представлена многочисленными способностями. Так, например, среди самых распространенных – Space, которая задается в строке с определенным количеством пробелов. Функция Asc требуется для записи кодировки в ANSI. Данные функции пользуются большой популярностью среди пользователей и дают возможность полноценной работы с файлами Excel;
  • Преобразование функций и ввода данных. Использование CVar помогает вернуть изначальное значение аргумента и преобразовать его в другой формат – Variant
  • Изменение и корректировка дат. Они помогают расширить спектр имеющихся возможностей. Чтобы вернуть исходное название или день, используется WeekdayName. Чтобы узнать какое количество секунд прошло с наступления 12 ночи, применяется функция Timer;
  • Чтобы преобразовать число в специальные системы можно обратиться к возможности Oct, которая поможет представить число, состоящее из 8 чисел;
  • Форматирование. Основной является Format. С ее помощью осуществляется возвращение значения в виде Variant, которое дальше форматируется в соответствии с установленными правилами.
  • Решение задачи с использованием программирования на VBA

    Чтобы просчитать возможные отклонения, требуется ввести обозначения и получить заданную формулу. Для того, чтобы просчитать процентное обозначение потребуется использовать следующую формулу: (F-P)разделить на P*100, суммарное значение должно получиться при действии (F-P). Полученные результаты рекомендуется сразу вводить в таблицу.

    Чтобы сформировать в надлежащем виде прогноз, нужно применить следующую формулу: ItogP=ItogP + P, ItogF=ItogF+ F. Для просчета отклонений требуется использовать (ItogF – ItogP) / ItogP * 100. Как только все действия будут выполнены, значения вносятся в ячейки, а значит присваивать переменные нет необходимости.

    Чтобы осуществить запуск, в первую очередь требуется сохранить созданную книгу. Также стоит обращать внимание и на другие условия. Так, например, добавлять строки придется каждый раз после введения новых обозначений в таблице.

    Если требуется создать таблицу для отчетности, то по данной функции достаточно кликнуть все раз. Как только работа подойдет к завершению, нужно нажать на закончить, а затем переключиться в соответствующее окно программы Excel.

    Заключение

    Выше были изучены все аспекты, каким образом можно использовать макросы, для чего нужен VBA в Excel и каким образом его применять. Стоит отметить, что благодаря простым инструкциям, научиться этим действиям сможет любой начинающий пользователь, который ранее не имел возможность изучать Visual Basic. Подобные возможности помогают в организации финансовой отчетности и проведения математических функций.


     

    Как установить моды в GTA V — Пошаговая инструкция
    « Предыдущая запись

    Обзор Essential Phone — пустышка от «отцов Андроида» или дешевый убийца флагаманов?
    Следующая запись »

    Как написать формулы с помощью макросов в Excel подробное руководство

    Автор Дмитрий Якушев На чтение 4 мин. Просмотров 9.8k.

    Итог: ознакомьтесь с 3 советами по написанию и созданию формул в макросах VBA с помощью этой статьи и видео.

    Уровень мастерства: Средний

    Автоматизировать написание формул

    Написание формул может быть одной из самых трудоемких частей
    вашей еженедельной или ежемесячной задачи Excel. Если вы работаете над
    автоматизацией этого процесса с помощью макроса, вы можете попросить VBA
    написать формулу и ввести ее в ячейки.

    Поначалу написание формул в VBA может быть немного сложнее,
    поэтому вот три совета, которые помогут сэкономить время и упростить процесс.

    Совет № 1: Свойство Formula

    Свойство Formula является членом объекта Range в VBA. Мы можем использовать его для установки / создания формулы для отдельной ячейки или диапазона ячеек.

    Есть несколько требований к значению формулы, которые мы устанавливаем с помощью свойства Formula:

    1. Формула представляет собой строку текста, заключенную в кавычки. Значение формулы должно начинаться и заканчиваться кавычками.
    2. Строка формулы должна начинаться со знака равенства = после первой кавычки.

    Вот простой пример формулы в макросе.

    Sub Formula_Property()
    
      ' Формула представляет собой строку текста, заключенную в кавычки
      ' Начинается со знака =
      Range("B10").Formula = "=SUM(B4:B9)"
    
    End Sub
    

    Свойство Formula также можно использовать для чтения существующей формулы в ячейке.

    Совет № 2: Используйте Macro Recorder

    Если ваши формулы более сложные или содержат специальные
    символы, их будет сложнее написать в VBA. К счастью, мы можем использовать
    рекордер макросов, чтобы создать код для нас.

    Create Formula VBA code with the Macro Recorder

    Вот шаги по созданию кода свойства формулы с помощью средства записи макросов.

    1. Включите средство записи макросов (вкладка «Разработчик»> «Запись макроса»)
    2. Введите формулу или отредактируйте существующую формулу.
    3. Нажмите Enter, чтобы ввести формулу.
    4. Код создается в макросе.

    Если ваша формула содержит кавычки или символы амперсанда, макрос записи будет учитывать это. Он создает все подстроки и правильно упаковывает все в кавычки. Вот пример.

    Sub Macro10()
    ' Используйте средство записи макросов для создания кода для сложных формул с
    ' специальны символы и относительные ссылки
    
      ActiveCell.FormulaR1C1 = "=""Total Sales: "" & TEXT(R[-5]C,""$#,###"")"
        
    End Sub
    

    Совет № 3: Нотация формулы стиля R1C1

    Если вы используете средство записи макросов для формул, вы
    заметите, что он создает код со свойством FormulaR1C1.

    Нотация стиля R1C1 позволяет нам создавать как относительные (A1), абсолютные ($A$1), так и смешанные ($A1, A$1) ссылки в нашем макрокоде.

    R1C1 обозначает строки и столбцы.

    Относительные ссылки

    Для относительных ссылок мы указываем количество строк и
    столбцов, которые мы хотим сместить от ячейки, в которой находится формула.
    Количество строк и столбцов указывается в квадратных скобках.

    Следующее создаст ссылку на ячейку, которая на 3 строки выше
    и на 2 строки справа от ячейки, содержащей формулу.

    R[-3]C[2]
    

    Отрицательные числа идут вверх по строкам и столбцам слева.

    Положительные числа идут вниз по строкам и столбцам справа.

    Абсолютные ссылки

    Мы также можем использовать нотацию R1C1 для абсолютных ссылок. Обычно это выглядит как $A$2.

    Для абсолютных ссылок мы НЕ используем квадратные скобки. Следующее создаст прямую ссылку на ячейку $A$2, строка 2, столбец 1

    R2C1
    

    При создании смешанных ссылок относительный номер строки или
    столбца будет зависеть от того, в какой ячейке находится формула.

    Проще всего использовать макро-рекордер, чтобы понять это.

    Свойство FormulaR1C1 и свойство формулы

    Свойство FormulaR1C1 считывает нотацию R1C1 и создает
    правильные ссылки в ячейках. Если вы используете обычное свойство Formula с
    нотацией R1C1, то VBA попытается вставить эти буквы в формулу, что, вероятно,
    приведет к ошибке формулы.

    Поэтому используйте свойство Formula, если ваш код содержит
    ссылки на ячейки ($ A $ 1), свойство FormulaR1C1, когда вам нужны относительные
    ссылки, которые применяются к нескольким ячейкам или зависят от того, где
    введена формула.

    Если ваша электронная таблица изменяется в зависимости от
    условий вне вашего контроля, таких как новые столбцы или строки данных,
    импортируемые из источника данных, то относительные ссылки и нотация стиля
    R1C1, вероятно, будут наилучшими.

    Я надеюсь, что эти советы помогут. Пожалуйста, оставьте
    комментарий ниже с вопросами или предложениями.

    Работа с макросами VBA в Excel в Интернете

    Хотя вы не можете создавать, запускать или редактировать макросы VBA (Visual Basic для приложений) в Excel в Интернете, вы можете открывать и редактировать книгу, содержащую макросы. Все существующие макросы останутся в книге, и вы можете открыть книгу в классическом приложении Excel для просмотра и редактирования макросов.

    Для редактирования макроса:

    Если у вас есть настольное приложение Excel, вы можете использовать его для работы с макросами.Над лентой щелкните Открыть в настольном приложении, и следуйте инструкциям в разделе Создание, запуск, редактирование или удаление макроса.

    Чтобы удалить макрос:

    Если вы откроете книгу, содержащую макросы, вы не увидите никаких сообщений из Excel в Интернете. Если вы знаете, что книга содержит макросы и вам необходимо их удалить, это необходимо сделать в классическом приложении Excel. Следуйте инструкциям в разделе Создание, запуск, редактирование или удаление макроса.

    Знаете ли вы?

    Если у вас нет подписки на Microsoft 365 или последней версии Excel, попробуйте сейчас бесплатно:

    Введение в макросы VBA и Excel

    Эта статья является частью нашего ускоренного курса VBA. Прочтите остальные статьи этой серии, щелкнув ссылки ниже.

    Introduction to VBA & Excel Macros - What are they & Writing your First Macro using Excel

    Introduction to VBA & Excel Macros - What are they & Writing your First Macro using Excel

    1. Что такое VBA и написание первого макроса VBA в Excel
    2. Понимание переменных, условий и циклов в VBA
    3. Использование ячеек, диапазонов и других объектов в макросах
    4. Собираем все вместе — ваше первое приложение VBA с использованием Excel
    5. Мои 10 лучших советов по освоению макросов VBA и Excel

    Введение в Excel VBA

    У каждого есть язык.Мой родной язык — телугу. Но я также говорю на хинди, английском и кутишском (на этом языке говорят мои двухлетние дети). Вы можете свободно говорить на английском, испанском, французском, немецком или вьетнамском языках.

    Как и мы с вами, в Excel тоже есть язык, на котором можно говорить и понимать. Этот язык называется VBA (Visual Basic для приложений) .

    Когда вы говорите инструкции Excel на этом языке VBA, Excel может делать то, что вы ему говорите. Это позволяет вам программировать Excel, чтобы вы могли автоматизировать скучный отчет, отформатировать большую и некрасивую диаграмму, очистить некоторые беспорядочные данные или просто воспроизвести некоторые случайные шумы.

    Что же тогда такое макрос?

    Макрос — это не что иное, как набор инструкций, которые вы даете Excel на языке VBA.

    Написание первого макроса

    Примечание. Если вы новичок в программировании, посмотрите наш видеоролик «Введение в программирование» , прежде чем продолжить.

    Чтобы написать свою первую программу VBA (или макрос), вам нужно сначала знать язык. В этом нам поможет магнитофон Excel.

    Магнитофон?!?

    Да.В Excel есть встроенный магнитофон, который прослушивает и записывает все, что вы делаете, на собственном языке Excel, , то есть VBA.

    Поскольку мы не знаем никакого VBA, мы будем использовать этот рекордер для записи наших действий, а затем мы увидим записанные инструкции (называемые кодом на компьютерном жаргоне), чтобы понять, как выглядит VBA.

    Наш первый макрос VBA — MakeMeRed ()

    Теперь, когда вы понимаете жаргон VBA, давайте продолжим и напишем наш самый первый макрос VBA. Цель проста.Когда мы запускаем этот макрос, он окрашивает текущую выбранную ячейку в красный цвет. Почему красный? О, красный — это красиво, ярко и потрясающе — прямо как ты.

    Вот как будет работать наш макрос, когда он будет готов.

    Demo of your first macro using Excel VBA - A button to make any cell red

    6 шагов к написанию вашего первого макроса

    Я не вижу ленты разработчика. Что теперь?

    Если вы не видите ленту проявителя, следуйте этим инструкциям.

    Excel 2007:

    1.Нажмите кнопку Office (вверху слева)
    2. Перейдите к параметрам Excel
    3. Перейдите к популярным
    4. Установите флажок «Показать вкладку разработчика на ленте» (3-й флажок)
    5. Нажмите ОК.

    Excel 2010:

    1. Щелкните меню «Файл» (вверху слева)
    2. Перейдите к параметрам
    3. Выберите «Настроить ленту»
    4. Убедитесь, что в правой области
    отмечена вкладка «Разработчик» 5. Щелкните ОК.

    Шаг 1: Выберите любую ячейку и запустите средство записи макросов

    Это самая простая часть.Просто выберите любую ячейку, перейдите на ленту разработчика и нажмите кнопку «Запись макроса».

    Шаг 2. Дайте имя своему макросу

    Укажите имя для вашего макроса. Я назвал свой MakeMeRed. Вы можете выбрать все, что захотите. Только убедитесь, что в имени нет пробелов и специальных символов (кроме подчеркивания)

    По завершении нажмите OK.

    Шаг 3. Залейте текущую ячейку красным цветом

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

    Шаг 4: Остановить запись

    Теперь, когда вы выполнили единственный шаг в нашем макросе, пора остановить магнитофон Excel. Перейдите на ленту разработчика и нажмите кнопку «Остановить запись».

    Шаг 5. Назначьте макрос кнопке

    Теперь перейдите к Вставить ленту и нарисуйте красивый прямоугольник. Затем введите в него текст вроде «щелкните меня, чтобы залить красным».

    Затем щелкните правой кнопкой мыши по форме прямоугольника и перейдите к Назначить макрос.И выберите макрос MakeMeRed из показанного списка. Щелкните ОК.

    Assigning Macros to Buttons - Excel VBA Crash Course

    Assigning Macros to Buttons - Excel VBA Crash Course

    Шаг 6. Продолжайте экспериментировать со своим первым макросом

    Это все. Теперь мы связали форму прямоугольника с вашим макросом. Каждый раз, когда вы щелкаете по нему, Excel опускает ведро красной краски в выбранные ячейки.

    Давайте, поиграйте с нашим маленьким макросом.

    Понимание макрокода MakeMeRed

    Теперь, когда ваш первый макрос работает, давайте заглянем за кулисы и поймем, какие инструкции VBA требуются для заполнения ячейки красным цветом.

    Для этого щелкните правой кнопкой мыши имя текущего листа (внизу слева) и выберите параметр «Просмотреть код». (Вы также можете нажать ALT + F11, чтобы сделать то же самое).

    Откроется редактор Visual Basic — место, где вы можете просматривать и редактировать различные инструкции VBA (макросы, код) для работы в Excel.

    Понимание редактора Visual Basic:

    Прежде чем разбираться в макросе MakeMeRed, нам нужно познакомиться с VBE (Visual Basic Editor). См. Этот рисунок, чтобы понять это.

    Understanding Excel Visual Basic Editor - Crash Course in Excel VBA

    Understanding Excel Visual Basic Editor - Crash Course in Excel VBA

    Просмотр VBA за MakeMeRed

    1. Выберите модуль 1 в левой части VBE (называется Project Explorer).
    2. Дважды щелкните по нему, чтобы открыть в области редактирования (вверху справа, большой белый прямоугольник)
    3. Вы можете увидеть код VBA за MakeMeRed

    Если вы следовали приведенным выше инструкциям, ваш код должен выглядеть следующим образом:

    Sub MakeMeRed ()
    '
    ' MakeMeRed Macro
    '
    With Selection.Интерьер
    .Pattern = xlSolid
    .PatternColorIndex = xlAutomatic
    .Color = 192
    .TintAndShade = 0
    .PatternTintAndShade = 0
    End With
    End Sub

    Вот вам и простая красная краска !!!

    Ну, что я могу сказать, Excel довольно многословен при записи.

    Понимание кода MakeMeRed VBA

    Давайте рассмотрим весь код макроса по одной строке за раз.

    • Sub MakeMeRed (): Эта строка сообщает Excel, что мы пишем новый набор инструкций.Слово SUB указывает, что следующие строки VBA являются подпроцедурой (или подпрограммой). Что на компьютерном жаргоне означает группу связанных инструкций, которые должны выполняться вместе, чтобы сделать что-то значимое. Подпроцедура заканчивается, когда Excel видит фразу «End Sub»
    • Строки, начинающиеся с одинарной кавычки (‘): Эти строки являются комментариями. Excel проигнорирует все, что вы напишете после одинарной кавычки. Они предназначены для вашего понимания.
    • с выделением.Интерьер: Хотя заполнение ячейки красным цветом может показаться одним шагом для вас и меня, на самом деле это много шагов для вашего компьютера. И когда вам нужно проделать много операций с одним и тем же объектом (в данном случае с выбранной ячейкой), лучше сгруппировать их все. Здесь на помощь приходит оператор WITH. Когда Excel видит With Seletion.Interior, Excel подумает: « ok, я собираюсь выполнить все следующие операции с внутренней частью выбранной ячейки, пока не увижу End With line »
    • Строки, начинающиеся с.: Это строки, которые указывают Excel форматировать внутреннюю часть ячейки. В этом случае самая важная строка — это .Color = 192 , которая сообщает Excel, что нужно залить красным цветом выбранную ячейку.
    • Конец с: Обозначает конец блока с.
    • End Sub: Это знаменует конец нашего маленького макроса MakeMeRed ().

    Несколько советов, чтобы лучше понять этот макрос:

    После того, как вы изучите код макроса, вот несколько способов лучше изучить его.

    • Измените что-нибудь: Вы можете изменить практически любую строку макроса, чтобы увидеть, что произойдет. Например, измените .color = 192 на .color = 62 и сохраните. Затем вернитесь в Excel и запустите макрос, чтобы увидеть, что произойдет.
    • Удалить что-нибудь: Вы можете удалить некоторые строки в макросе, чтобы увидеть, что произойдет. Удалите строку .PatternColorIndex = xlAutomatic и запустите снова, чтобы посмотреть, что произойдет.

    Загрузить пример книги для изучения VBA

    Щелкните здесь, чтобы загрузить пример рабочей книги с MakeMeRed Macro .
    Версия, совместимая с Excel 2003 здесь.
    Поиграйте с кодом и поймите это лучше.

    Что дальше — понимание переменных, условий и циклов

    Из второй части этого руководства вы узнаете о переменных, условиях и циклах — основных структурах программирования VBA.

    Вы пишете код VBA? Поделитесь своим опытом?

    Благодаря моему высшему образованию и опыту работы. Меня выучили на программиста. Поэтому я считаю VBA интуитивно понятным и простым в использовании.Но это может быть не так для многих из вас, кто цепляется за VBA без какого-либо формального образования.

    Я хотел бы знать, как вы изучаете VBA и какой опыт вы испытали, когда написали этот первый макрос. Пожалуйста, поделитесь в комментариях.

    Присоединяйтесь к нашим классам VBA

    Мы запускаем онлайн-класс VBA (макросы), чтобы сделать вас крутыми. Этот класс предлагает более 20 часов видеоконтента по всем аспектам VBA — от основ до продвинутых. Вы можете смотреть уроки в любое время и учиться в удобном для вас темпе.К каждому уроку предлагается книга для загрузки с образцом кода. Если вы хотите изучить VBA и стать в нем мастером, рассмотрите возможность присоединения к этому курсу.

    Нажмите здесь, чтобы узнать больше и присоединиться к нашей программе VBA .

    Заявление IF

    VBA — Полное руководство

    Этот пост предоставляет полное руководство по выражению If в VBA. Если вы ищете синтаксис, ознакомьтесь с кратким руководством в первом разделе, которое включает несколько примеров.

    В содержании ниже представлен обзор того, что включено в сообщение.Вы можете использовать это, чтобы перейти к нужному разделу, или вы можете прочитать сообщение от начала до конца.

    «Угадай, если можешь, и выбирай, если посмеешь». — Пьер Корнель

    Краткое руководство по VBA If Заявление

    Описание Формат Пример
    Если То Если [условие истинно] То
    [сделать что-нибудь]
    Конец Если
    Если счет = 100 То
    Отладка.Печать «Perfect»
    End If
    If Else If [condition is true] Then
    [do something]
    Else
    [do something]
    End If
    If score = 100 Then
    Debug.Print «Perfect»
    Else
    Debug. Распечатать «Попробовать снова»
    Конец Если
    If ElseIf If [условие 1 истинно] Then
    [сделайте что-нибудь]
    ElseIf [условие 2 истинно] Then
    [сделайте что-нибудь]
    End If
    If score = 100 Then
    Debug.Print «Perfect»
    ElseIf score> 50 Then
    Debug.Print «Passed»
    ElseIf score Then
    Debug.Print «Try again»
    End If
    Else и ElseIf
    (Else должно быть
    после ElseIf)
    Если [условие 1 выполняется] Then
    [do something]
    ElseIf [условие 2 истинно] Then
    [do something]
    Else
    [сделать что-нибудь]
    End If
    If score = 100 Then
    Debug.Напечатать «Perfect»
    ElseIf score> 50 Then
    Debug.Print «Passed»
    ElseIf score> 30 Then
    Debug.Print «Try again»
    Else
    Debug.Print «Yikes»
    End If
    Если без Endif
    (Только одна строка)
    Если [условие истинно] То [сделать что-нибудь] Если значение То значение = 0

    В следующем коде показан простой пример использования оператора If

    VBA.

    Если Sheet1.Диапазон ("A1"). Значение> 5 Тогда
        Debug.Print «Значение больше пяти».
    ElseIf Sheet1.Range ("A1"). Значение Тогда
        Debug.Print «значение меньше пяти».
    Еще
        Debug.Print «значение равно пяти».
    Конец, если
     

    Вебинар

    Члены архивов веб-семинаров могут получить доступ к веб-семинару по этой статье, щелкнув изображение ниже.

    ( Примечание: участников веб-сайта имеют доступ к полному архиву вебинаров.)

    Что такое оператор VBA If

    Оператор VBA If используется, чтобы позволить вашему коду делать выбор во время его выполнения.

    Вам часто нужно делать выбор на основе данных, которые считываются вашим макросом.

    Например, вы можете захотеть читать только тех студентов, у которых есть оценки выше 70. Читая каждого ученика, вы должны использовать оператор If, чтобы проверять оценки каждого ученика.

    Важное слово в последнем предложении — проверить .Оператор If используется для проверки значения, а затем для выполнения задачи на основе результатов этой проверки.

    Тестовые данные и исходный код

    Мы собираемся использовать следующие тестовые данные для примеров кода в этом посте:

    VBA If Sample Data

    Вы можете загрузить тестовые данные со всем исходным кодом для публикации плюс решение упражнения в конце:

    Формат оператора If-Then VBA

    Формат оператора If Then следующий

    Если [условие верно] Тогда
     

    За ключевым словом If следует Condition и ключевое слово Then

    Каждый раз, когда вы используете оператор If Then , вы должны использовать соответствующий оператор End If .
    Когда условие оценивается как истинное, обрабатываются все строки между If Then и End If .

    Если [условие верно] Тогда
    [строки кода]
    [строки кода]
    [строки кода]
    Конец, если
     

    Чтобы сделать ваш код более читабельным, рекомендуется делать отступы между операторами If Then и End If .

    Отступ между If и End If

    Отступ означает просто переместить строку кода на одну табуляцию вправо.Практическое правило — делать отступ между операторами начала и конца, например

    .

    Sub… End Sub
    If Then… End If
    If Then… ElseIf… Else… Endif
    For… Next
    Do While… Loop
    Select Case… End Case

    Чтобы сделать отступ в коде, вы можете выделить строки для отступа и нажать клавишу TAB. Нажатие Shift + Tab вытеснит код, т.е. переместит его на одну вкладку влево.

    Вы также можете использовать значки на панели инструментов Visual Basic для отступа / отступа кода

    VBA If

    Выберите код и щелкните значки, чтобы увеличить / уменьшить

    Если вы посмотрите на примеры кода на этом веб-сайте, вы увидите, что код имеет отступ.

    Простой пример «если, то»

    Следующий код распечатывает имена всех учащихся с отметками выше 50 по французскому языку.

    https://excelmacromastery.com/
    Дополнительные метки чтения ()
        
        Тусклый я как долго
        'Пройдите по столбцам меток
        Для i = от 2 до 11
            'Проверьте, нет ли отметок больше 50
            Если Sheet1.Range ("C" & i) .Value> 50, то
                'Распечатать имя учащегося в непосредственном окне (Ctrl + G)
                Отлаживать.Печать Sheet1.Range ("A" & i) .Value & "" & Sheet1.Range ("B" & i) .Value
            Конец, если
        
        следующий
        
    Конец подписки
     

    Результаты
    Брайан Снайдер
    Хуанита Муди
    Дуглас Блэр
    Лия Франк
    Моника Бэнкс

    Поэкспериментируйте с этим примером и проверьте значение или знак > и посмотрите, как меняются результаты.

    Использование условий с оператором if в VBA

    Фрагмент кода между ключевыми словами If, и Then называется условием.Условие — это утверждение, которое оценивается как истинное или ложное. В основном они используются с операторами Loops и If. Когда вы создаете условие, вы используете такие знаки, как>, <, <>,> =, <=, =.

    Ниже приведены примеры условий

    Условие Это верно, когда
    x x меньше 5
    x x меньше или равно 5
    x> 5 x больше 5
    x> = 5 x больше или равно 5
    x = 5 x равно 5
    x 5 x не равно 5
    x> 5 И x x больше 5 И x меньше 10
    x = 2 Или x> 10 x равно 2 ИЛИ x больше 10
    Range («A1») = «John» Ячейка A1 содержит текст «John»
    Диапазон («A1») «John» Ячейка A1 не содержит текста «John»

    Вы могли заметить x = 5 как условие.Это не следует путать с x = 5 при использовании в качестве присваивания.

    Когда в условии используется равенство, это означает, что «левая сторона равна правой стороне».

    В следующей таблице показано, как знак равенства используется в условиях и присвоениях

    Использование Equals Тип инструкции Значение
    Цикл до x = 5 Условие x равно 5
    Do While x = 5 Условие Is x равно 5
    Если x = 5, то Условие Если x равно 5
    Для x = 1 До 5 Присвоение Установите значение x на 1, затем на 2 и т. Д.
    x = 5 Присвоение Установите значение x равным 5
    b = 6 = 5 Присвоение и условие Присвойте b результату условия 6 = 5
    x = MyFunc (5,6) Присвоение Присвойте x значению, возвращаемому функцией

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

    Сначала это может показаться запутанным, но подумайте об этом так. Любой оператор, который начинается с переменной и равенства, имеет следующий формат

    [переменная] [=] [оценить эту часть]

    Итак, все, что находится справа от знака равенства, оценивается, и результат помещается в переменную. Снова взяв последние три задания, вы можете посмотреть на них так:

    [x] [=] [5]
    [b] [=] [6 = 5]
    [x] [=] [MyFunc (5,6)]

    Использование ElseIf с оператором If VBA

    Оператор ElseIf позволяет вам выбирать из нескольких вариантов.В следующем примере мы печатаем знаки, которые находятся в диапазоне различий или высокого различия.

    https://excelmacromastery.com/
    Sub UseElseIf ()
        
        Если Marks> = 85, то
            Debug.Print "High Destinction"
        ElseIf Marks> = 75 Тогда
            Debug.Print "Destinction"
        Конец, если
        
    Конец подписки
     

    Важно понимать, что порядок важен. Сначала проверяется условие If.
    Если это правда, то печатается «High Distinction» и оператор If завершается.
    Если это ложь, то код переходит к следующему ElseIf и проверяет его условие.

    Давайте поменяем местами If и ElseIf из последнего примера. Теперь код выглядит так:

    https://excelmacromastery.com/
    Sub UseElseIfWrong ()
        
        'Этот код неверен, так как ElseIf никогда не будет верным
        Если Marks> = 75, то
            Debug.Print "Destinction"
        ElseIf Marks> = 85 Тогда
            'код здесь никогда не дойдет
            Отлаживать.Печать "High Destinction"
        Конец, если
        
    Конец подписки
     

    В этом случае мы сначала проверяем, не превышает ли значение 75. Мы никогда не будем печатать «High Distinction», потому что, если значение больше 85, будет срабатывать первый оператор if.

    Чтобы избежать подобных проблем, мы должны использовать два условия. Они помогают точно указать, что вы ищете, и устранить путаницу. В приведенном ниже примере показано, как их использовать. В следующем разделе мы рассмотрим еще несколько условий.

    Если отметки> = 75 И отметки Тогда
        Debug.Print "Destinction"
    ИначеЕсли отметки> = 85 И отметки Тогда
        Debug.Print "High Destinction"
    Конец, если
     

    Давайте расширим исходный код. Вы можете использовать столько операторов ElseIf, сколько захотите. Мы добавим еще несколько, чтобы учесть все наши классификации оценок.

    Если вы хотите опробовать эти примеры, вы можете загрузить код сверху этого сообщения.

    Использование Else с оператором if в VBA

    Оператор VBA Else используется для уловки всего.Это в основном означает «если бы ни одно условие не было истинным» или «все остальное». В предыдущем примере кода мы не включали оператор печати для отметки о сбое. Мы можем добавить это с помощью Else.

    https://excelmacromastery.com/
    Sub UseElse ()
        
        Если Marks> = 85, то
            Debug.Print "High Destinction"
        ElseIf Marks> = 75 Тогда
            Debug.Print "Destinction"
        ElseIf Marks> = 55 Тогда
            Debug.Print "Кредит"
        ElseIf Marks> = 40 Тогда
            Отлаживать.Распечатать "Пропуск"
        Еще
            'Для всех остальных марок
            Debug.Print "Fail"
        Конец, если
        
    Конец подписки
     

    Итак, если это не один из других типов, то это сбой.

    Давайте напишем код, чтобы просмотреть наши образцы данных и распечатать учащегося и его классификацию:

    https://excelmacromastery.com/
    Подложка AddClass ()
        
        'получить последнюю строку
        Dim startRow As Long, lastRow As Long
        startRow = 2
        lastRow = Лист1.Ячейки (Sheet1.Rows.Count, 1) .End (xlUp) .Row
        
        Dim i As Long, Marks as Long
        Dim sClass как строка
    
        'Пройдите по столбцам меток
        Для i = startRow To lastRow
            Marks = Sheet1.Range ("C" & i) .Value
            'Отметьте и классифицируйте соответственно
            Если Marks> = 85, то
                sClass = "Высокая цель"
            ElseIf Marks> = 75 Тогда
                sClass = "Destinction"
            ElseIf Marks> = 55 Тогда
                sClass = "Кредит"
            ElseIf Marks> = 40 Тогда
                sClass = "Пройдено"
            Еще
                'Для всех остальных марок
                sClass = "Ошибка"
            Конец, если
        
            'Запишите класс в столбец E
            Лист1.Диапазон ("E" & i) .Value = sClass
        следующий
        
    Конец подписки
     

    Результаты выглядят так со столбцом E, содержащим классификацию знаков

    .

    Добавить комментарий

    Ваш адрес email не будет опубликован. Обязательные поля помечены *