Основы программирования на visual basic и vba в excel 2007


Основы программирования на Visual Basic for Application (VBA) в Excel

Содержание:

Добавление на ленту вкладки разработчика

Написание кода Ваших процедур и редактирование макросов производится в редакторе Visual Basic, который доступен с вкладки «Разработчик». Данная вкладка по умолчанию скрыта. Для ее отображения необходимо выполнить следующие действия:

Для Excel 2007. Зайдите в параметры Excel, используя кнопку Office, и в «основных параметрах работы с Excel» установите галочку на пункте «Показывать вкладку Разработчик на ленте».

Для Excel 2010 и 2013. В параметрах Excel нужно выбрать пункт «Настроить ленту» и в категории основные вкладки установить галочку для вкладки «Разработчик».

Знакомство с редактором Visual Basic в Excel

Чтобы попасть в редактор кода, кликните на вкладке разработчика в области «Код» по кнопке «Visual Basic».

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

№1 на изображении. Кнопка сохранить. Сохраняет текущую книгу Excel. Необходимо быть внимательнее при работе с несколькими книгами, так как текущей считается та, которая выделена в окне проектов (№3 на изображении).

№2 на изображении. Кнопки запуска, остановки и прерывания выполнения кода. Во время запуска начинает выполняться код той процедуры, на которой размещен курсор. Данные кнопки дублируются вкладкой «Run» основного меню редактора.

№3 на изображении. Окно управления проектами VBA открытых книг (Project Explorer) и кнопка, отображающая это окно.

№4 на изображении. Кнопка, отображающая окно свойств объектов (Properties Window), выбранных в окне №3, и элементов пользовательских форм (работа с объектами, их свойствами и методами будет рассмотрена в отдельной статье этой категории).

№5 на изображении. Кнопка вызова окна объектов (Object Browser). В нем описаны все доступные для работы объекты, их свойства и методы.

Кнопки №3, №4 и №5 так же доступны на вкладке «View» главного меню редактора. Там же можно вызвать другие полезные для работы окна, которые не будут рассмотрены в этом материале.

Написание простой процедуры на Visual Basic for Application

Код любой процедуры (подпрограммы) располагается в модуле, поэтому необходимо его добавить, чтобы приступить к программированию. Выберите пункт «Module» на вкладке «Insert» основного меню редактора VBA. В основной области редактора (на изображении имеет серый фон) должно появиться новое окно кода – Имя_книги – имя_модуля (Code), а в окне управления проектами (№3) к дереву выбранного проекта добавится вновь созданный модуль.

Добавьте в модуль следующий код:

Sub Моя_процедура() MsgBox "Привет пользователь!" End Sub

Данная процедура выводит на экран диалоговое окно с сообщением «Привет пользователь!». Протестируйте ее работу, нажав кнопку Rub Sub (№2 на изображении) или вызвав как обычный макрос.

Теперь более подробно разберем приведенный код.

Любая процедура начинается со строки объявления, состоящей из оператора Sub (сокращение от Subprogram), после которого следует имя подпрограммы. За именем следует перечень аргументов, заключенный в скобки.

Для имени действуют некоторые ограничения: оно должно начинаться с буквы и не должно содержать пробелы и большинство спецсимволов.

В этом примере аргументы не используются, поэтому указываются пустые скобки.

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

Последняя строка содержит оператор End с последующим ключевым словом Sub и сообщает о завершении процедуры.

Учимся пользоваться Object Browser

Выше была упомянута функция MsgBox, но ее возможности полностью не рассмотрены. Это хороший случай, чтобы научиться использовать браузер объектов (№5 на изображении окна редактора VBA).

Нажмите кнопку на панели или клавишу F2, чтобы отобразить Object Browser:

Выпадающий список №1 содержит перечень всех подключенных библиотек. Используйте его только в том случае, если точно знаете, к какой библиотеке относится изучаемый класс, функция и т.д. (подключить или отключить любую из доступных библиотек можно, выбрав пункт «References» на вкладке «Tools» главного меню редактора VBA).

Поле №2 предназначено для поиска свойств, методов, классов подключенных библиотек.

Результаты поиска отображаются в поле №3 и представляют из себя таблицу с тремя столбцами: библиотека, класс и член класса.

Поле №4 содержит перечень всех классов, выбранных в поле №1 библиотек.

В области №5 содержится список всех членов класса, выбранного в поле №4.

Поле №6 содержит краткую справку о выделенном результате поиска, классе или члене класса.

Теперь найдем функцию MsgBox с помощью браузера объектов. В поле поиска (№2) впишите ее название и кликните по кнопке с изображением бинокля. В поле результатов поиска выделите строку со значением MsgBox в столбце «Member». В поле №6 появилась краткая информация, сообщающая нам, что выбранный член является функцией, имеет перечень аргументов, возвращает результат типа VbMsgBoxResult, относиться в классу Interaction библиотеки VBA.

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

Изучите самостоятельно возможности функции MsgBox.

Ссылка на процедуру VBA

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

Для лучшего понимая рассмотрим пример (в примере используется псевдокод):

Начало_Процедуры Любой код Первая строка дублирующего кода Любой код Последняя строка дублирующего кода Любой код Первая строка дублирующего кода Любой код Последняя строка дублирующего кода Любой код Конец_Процедуру

Выносите дублирующие участки кода в отдельные процедуры и указывайте ссылки на них из главной процедуры:

Начало_Главной_Процедуры Любой код Ссылка на Процедуру_дублирующегося_кода Любой код Ссылка на Процедуру_дублирующегося_кода Любой код Конец_Главной_Процедуру Начало_Процедуры_дублирующегося_кода Любой код Конец_Процедуры_дублирующегося_кода

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

Call Макрос1 'Следующая строка идентична предыдущей Макрос1

Если материалы office-menu.ru Вам помогли, то поддержите, пожалуйста, проект, чтобы мы могли развивать его дальше.

У Вас недостаточно прав для комментирования.

office-menu.ru

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

Теперь самое время изучить коллекцию Sheets, используемую при записи макроса. Раздел "Листы" в справочном руководстве по объектной модели содержит следующий текст.

"Коллекция Sheets может содержать объекты Chart или Worksheet. Если нужно работать только с листами одного типа, просмотрите раздел об объекте этого типа листа".

Используется только коллекция Worksheets, поэтому изменить код следующим образом.

Sub RenameWorksheets() Worksheets("Sheet1").Name = "New Name" End Sub

Циклы

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

В VBA есть конструкция, называемая циклом For Each и идеально подходящая для этого случая. Цикл For Each проверяет все элементы в объекте коллекции, таком как Worksheets, и может использоваться для выполнения действия (например, изменения имени) над некоторыми или над всеми этими элементами.

Дополнительные сведения о цикле For Each см. в справочном руководстве по языку VBA. Щелкните "Visual Basic Conceptual Topics" (Концептуальные темы Visual Basic), затем "Using For Each...Next Statements" (Использование инструкций For Each...Next). Кроме того, помните, что справочное руководство по языку VBA, как и справочное руководство по объектной модели, сторицей окупит время, потраченное на его изучение, и является отличным местом для поиска идей при плотной работе над кодом.

Используя третий пример в разделе "Using For Each...Next Statements" (Использование инструкций For Each...Next), измените макрос так, чтобы он стал похож на следующий код.

Sub RenameWorksheets() For Each myWorksheet In Worksheets myWorksheet.Name = "New Name" Next End Sub

myWorksheet является переменной, то есть ее значение меняется. В этом случае переменная myWorksheet последовательно представляет каждый лист в коллекции Worksheets. Необязательно использовать myWorksheet, можно использовать "x", "ws", "WorksheetToRenameAfterTheContentsOfCellB1" или (с небольшими ограничениями) практически любое желательное имя. Хорошей практикой является использование имен переменных, достаточно длинных, чтобы напомнить о ее смысле, но не настолько длинных, чтобы загромождать код.

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

myWorksheet.Name = "New Name"

Чтобы исправить строку так, чтобы можно было проверить работу цикла For Each, измените строку следующим образом.

myWorksheet.Name = myWorksheet.Name & "-changed"

Вместо попытки присвоить каждому листу одно и то же имя, эта строка изменяет текущее имя каждого листа (myWorksheet.Name) на текущее имя с добавлением суффикса "-changed".

Полезное переименование

Макрос постепенно приближается к тому, что может действительно решить проблему. Теперь нужно найти способ извлекать данные из самих листов — конкретно из ячейки B1 каждого листа — и помещать эти данные в имена листов.

В этот раз вместо использования записи макроса для изучения ссылки на ячейку, сделаем предположение и посмотрим, сработает ли использование объекта Cell (ячейка). Это хорошее предположение, но если открыть справочное руководство по объектной модели и попытаться найти объект Cell, окажется, что там никакого объекта Cell нет! Но есть объект CellFormat (Возможно, на английском языке).

Раздел объекта CellFormat содержит следующий код в первом примере.

' Set the interior of cell A1 to yellow. Range("A1").Select

Предполагается, что объект Range (диапазон) используется, чтобы задать диапазон ячеек или только одну отдельную ячейку. И снова, часть .Select не понадобится, но понадобится найти, как ссылаться на содержимое объекта Range, а не на сам объект Range. Если перейти к разделу Range, можно прочитать, что у объекта Range есть и Methods, и Properties. Содержимым объекта Range является сущность, не действие, поэтому это, скорее всего, будет Property. Если просмотреть список, можно найти свойство Value. Поэтому попробуйте следующий код.

Sub RenameWorksheets() For Each myWorksheet In Worksheets myWorksheet.Name = myWorksheet.Range("B1").Value Next End Sub

Выполнение этого кода для книги, содержащей листы с пустой ячейкой B1, приведет к ошибке, так как значение свойства Value пустого диапазона Range равно "" (пустая текстовая строка), которое не является допустимым именем листа. Самое время создать какие-нибудь данные для примера. Сделайте три листа книги похожими на показанные на следующем рисунке, а затем выполните макрос.

Рисунок 4. Пример данных для макроса RenameWorksheets

 

 

 

Имена листов изменятся соответствующим образом.

Проверка пустых ячеек

Как отмечалось ранее, макрос приводит к ошибке, если любая из ячеек B1 книги оказывается пустой. Вместо ручной проверки каждого листа можно запрограммировать макрос так, чтобы эти действия выполнялись в нем. Перед строкой myWorksheet.Name добавьте следующую строку кода.

If myWorksheet.Range("B1").Value <> "" Then

А после строки myWorksheet.Name добавьте следующий текст.

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

myWorksheet.Range("B1").Value <> ""

Знаки <> означают "не равно", а знаки кавычек, между которыми ничего нет, обозначают пустую текстовую строку, то есть полное отсутствие текста. Следовательно, все строки кода между If и End If будут выполнены только если значение в ячейке B1 не пусто, то есть, когда ячейка B1 содержит текст.

Дополнительные сведения об инструкции If…Then см. в справочном руководстве по языку VBA. (Полное название раздела — "If…Then…Else statement" (Инструкция If…Then…Else), где Else — это необязательный компонент.)

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

Другим улучшением, которое нужно внести в макрос, является помещение в начало макроса объявления переменной myWorksheet.

Dim myWorksheet As Worksheet

Dim является сокращением от "Dimension" (размерность), а Worksheet — это тип этой конкретной переменной. Эта инструкция сообщает VBA, какой тип сущности представляет переменная myWorksheet. Обратите внимание, что после введения As, редактор Visual Basic выводит всплывающую подсказку, содержащую перечень всех доступных типов переменных. Это пример технологии IntelliSense, то есть редактор Visual Basic реагирует на то, что, как он считает, пытается сделать пользователь, и предлагает список соответствующих вариантов. Можно выбрать вариант из списка или продолжить ввод.

Хотя объявления переменных в VBA не являются обязательными, их использование настоятельно рекомендуется! Объявление переменных резко упрощает отслеживание переменных и обнаружение ошибок в коде. Кроме того, помните, что при объявлении переменной с типом объекта (например, Worksheet) IntelliSense выводит соответствующий список свойств и методов, связанных с объектом, при последующем использовании этой переменной объекта в макросе.

Комментарии

Теперь макрос стал достаточно сложным, чтобы добавить в него несколько комментариев, напоминающих, что делает код. Количество используемых комментариев — это вопрос личного стиля, но в общем случае слишком много комментариев лучше, чем слишком мало комментариев. Со временем код обычно нужно изменять и обновлять. Без комментариев может быть трудно понять, что делается в коде, особенно когда лицо, изменяющее код, не является автором первоначального кода. Добавление комментариев для условия If и для строки, переименовывающей листы, приводит к появлению следующего кода.

Sub RenameWorksheets() Dim myWorksheet As Worksheet For Each myWorksheet In Worksheets 'make sure that cell B1 is not empty If myWorksheet.Range("B1").Value <> "" Then 'rename the worksheet to the contents of cell B1 myWorksheet.Name = myWorksheet.Range("B1").Value End If Next End Sub

Чтобы проверить макрос, переименуйте листы обратно в Лист1, Лист2 и Лист3 и удалите содержимое ячейки B1 на одном или нескольких листах. Выполните макрос, чтобы проверить, что он переименовывает листы с текстом в ячейке B1 и оставляет нетронутыми остальные листы. Макрос работает для любого числа листов, с любой комбинацией заполненных и пустых ячеек B1.

msdn.microsoft.com

Создание макросов и пользовательских функций на VBA

Введение

Всем нам приходится - кому реже, кому чаще - повторять одни и те же действия и операции в Excel. Любая офисная работа предполагает некую "рутинную составляющую" - одни и те же еженедельные отчеты, одни и те же действия по обработке поступивших данных, заполнение однообразных таблиц или бланков и т.д. Использование макросов и пользовательских функций позволяет автоматизировать эти операции, перекладывая монотонную однообразную работу на плечи Excel. Другим поводом для использования макросов в вашей работе может стать необходимость добавить в Microsoft Excel недостающие, но нужные вам функции. Например функцию сборки данных с разных листов на один итоговый лист, разнесения данных обратно, вывод суммы прописью и т.д.

Макрос - это запрограммированная последовательность действий (программа, процедура), записанная на языке программирования Visual Basic for Applications (VBA). Мы можем запускать макрос сколько угодно раз, заставляя Excel выполнять последовательность любых  нужных нам действий, которые нам не хочется выполнять вручную.

В принципе, существует великое множество языков программирования (Pascal, Fortran, C++, C#, Java, ASP, PHP...), но для всех программ пакета Microsoft Office стандартом является именно встроенный язык VBA. Команды этого языка понимает любое офисное приложение, будь то Excel, Word, Outlook или Access.

Способ 1. Создание макросов в редакторе Visual Basic

Для ввода команд и формирования программы, т.е. создания макроса необходимо открыть специальное окно - редактор программ на VBA, встроенный в Microsoft Excel.

  • В старых версиях (Excel 2003 и старше) для этого идем в меню Сервис - Макрос - Редактор Visual Basic (Toos - Macro - Visual Basic Editor).
  • В новых версиях (Excel 2007 и новее) для этого нужно сначала отобразить вкладку Разработчик (Developer). Выбираем Файл - Параметры - Настройка ленты (File - Options - Customize Ribbon) и включаем в правой части окна флажок Разработчик (Developer). Теперь на появившейся вкладке нам будут доступны основные инструменты для работы с макросами, в том числе и нужная нам кнопка Редактор Visual Basic (Visual Basic Editor) :

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

Макросы (т.е. наборы команд на языке VBA) хранятся в программных модулях. В любой книге Excel мы можем создать любое количество программных модулей и разместить там наши макросы. Один модуль может содержать любое количество макросов. Доступ ко всем модулям осуществляется с помощью окна Project Explorer в левом верхнем углу редактора (если его не видно, нажмите CTRL+R). Программные модули бывают нескольких типов для разных ситуаций:

  • Обычные модули - используются в большинстве случаев, когда речь идет о макросах. Для создания такого модуля выберите в меню Insert - Module. В появившееся окно нового пустого модуля можно вводить команды на VBA, набирая их с клавиатуры или копируя их из другого модуля, с этого сайта или еще откуда нибудь:

  • Модуль Эта книга - также виден в левом верхнем углу редактора Visual Basic в окне, которое называется Project Explorer. В этот модуль обычно записываются макросы, которые должны выполнятся при наступлении каких-либо событий в книге (открытие или сохранение книги, печать файла и т.п.):

  • Модуль листа - доступен через Project Explorer и через контекстное меню листа, т.е. правой кнопкой мыши по ярлычку листа - команда Исходный текст (View Source). Сюда записывают макросы, которые должны выполняться при наступлении определенных событий на листе (изменение данных в ячейках, пересчет листа, копирование или удаление листа и т.д.)

 Обычный макрос, введенный в стандартный модуль выглядит примерно так:

Давайте разберем приведенный выше в качестве примера макрос Zamena:

  • Любой макрос должен начинаться с оператора Sub, за которым идет имя макроса и список аргументов (входных значений) в скобках. Если аргументов нет, то скобки надо оставить пустыми.
  • Любой макрос должен заканчиваться оператором End Sub.
  • Все, что находится между Sub и End Sub - тело макроса, т.е. команды, которые будут выполняться при запуске макроса. В данном случае макрос выделяет ячейку заливает выделенных диапазон (Selection) желтым цветом (код = 6) и затем проходит в цикле по всем ячейкам, заменяя формулы на значения. В конце выводится окно сообщения (MsgBox).

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

Способ 2. Запись макросов макрорекордером

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

  • Макрорекордер записывает только те действия, которые выполняются в пределах окна Microsoft Excel. Как только вы закрываете Excel или переключаетесь в другую программу - запись останавливается.
  • Макрорекордер может записать только те действия, для которых есть команды меню или кнопки в Excel. Программист же может написать макрос, который делает то, что Excel никогда не умел (сортировку по цвету, например или что-то подобное).
  • Если во время записи макроса макрорекордером вы ошиблись - ошибка будет записана. Однако смело можете давить на кнопку отмены последнего действия (Undo) - во время записи макроса макрорекордером она не просто возрвращает Вас в предыдущее состояние, но и стирает последнюю записанную команду на VBA.

Чтобы включить запись необходимо:

  • в Excel 2003 и старше - выбрать в меню Сервис - Макрос - Начать запись (Tools - Macro - Record New Macro)
  • в Excel 2007 и новее - нажать кнопку Запись макроса (Record macro) на вкладке Разработчик (Developer)

Затем необходимо настроить параметры записываемого макроса в окне Запись макроса:

  • Имя макроса - подойдет любое имя на русском или английском языке. Имя должно начинаться с буквы и не содержать пробелов и знаков препинания.
  • Сочетание клавиш - будет потом использоваться для быстрого запуска макроса. Если забудете сочетание или вообще его не введете, то макрос можно будет запустить через меню Сервис - Макрос - Макросы - Выполнить (Tools - Macro - Macros - Run) или с помощью кнопки Макросы (Macros) на вкладке Разработчик (Developer) или нажав ALT+F8.
  • Сохранить в... - здесь задается место, куда будет сохранен текст макроса, т.е. набор команд на VBA из которых и состоит макрос.:
    • Эта книга - макрос сохраняется в модуль текущей книги и, как следствие, будет выполнятся только пока эта книга открыта в Excel
    • Новая книга - макрос сохраняется в шаблон, на основе которого создается любая новая пустая книга в Excel, т.е. макрос будет содержаться во всех новых книгах, создаваемых на данном компьютере начиная с текущего момента
    • Личная книга макросов - это специальная книга Excel  с именем Personal.xls, которая используется как хранилище макросов. Все макросы из Personal.xls загружаются в память при старте Excel и могут быть запущены в любой момент и в любой книге.

После включения записи и выполнения действий, которые необходимо записать, запись можно остановить командой Остановить запись (Stop Recording).

Запуск и редактирование макросов

Управление всеми доступными макросами производится в окне, которое можно открыть с помощью кнопки Макросы (Macros) на вкладке Разработчик (Developer) или - в старых версиях Excel - через меню Сервис - Макрос - Макросы (Tools - Macro - Macros):

  • Любой выделенный в списке макрос можно запустить кнопкой Выполнить (Run).
  • Кнопка Параметры (Options) позволяет посмотреть и отредактировать сочетание клавиш для быстрого запуска макроса.
  • Кнопка Изменить (Edit) открывает редактор Visual Basic (см. выше) и позволяет просмотреть и отредактировать текст макроса на VBA.

Создание кнопки для запуска макросов

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

Кнопка на панели инструментов в Excel 2003 и старше

Откройте меню Сервис - Настройка (Tools - Customize) и перейдите на вкладку Команды (Commands). В категории Макросы легко найти веселый желтый "колобок" - Настраиваемую кнопку (Custom button):

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

Кнопка на панели быстрого доступа в Excel 2007 и новее

Щелкните правой кнопкой мыши по панели быстрого доступа в левом верхнем углу окна Excel и выберите команду Настройка панели быстрого доступа (Customise Quick Access Toolbar):

Затем в открывшемся окне выберите категорию Макросы и при помощи кнопки Добавить (Add) перенесите выбранный макрос в правую половину окна, т.е. на панель быстрого доступа:

Кнопка на листе

Этот способ подходит для любой версии Excel. Мы добавим кнопку запуска макроса прямо на рабочий лист, как графический объект. Для этого:

  • В Excel 2003 и старше - откройте панель инструментов Формы через меню Вид - Панели инструментов - Формы (View - Toolbars - Forms)
  • В Excel 2007 и новее - откройте выпадающий список Вставить (Insert) на вкладке Разработчик (Developer) 

Выберите объект Кнопка (Button):

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

Создание пользовательских функций на VBA

Создание пользовательских функций или, как их иногда еще называют, UDF-функций (User Defined Functions) принципиально не отличается от создания макроса в обычном программном модуле. Разница только в том, что макрос выполняет последовательность действий с объектами книги (ячейками, формулами и значениями, листами, диаграммами и т.д.), а пользовательская функция - только с теми значениями, которые мы передадим ей как аргументы (исходные данные для расчета).

Чтобы создать пользовательскую функцию для расчета, например, налога на добавленную стоимость (НДС) откроем редактор VBA, добавим новый модуль через меню Insert - Module и введем туда текст нашей функции:

Обратите внимание, что в отличие от макросов функции имеют заголовок Function вместо Sub и непустой список аргументов (в нашем случае это Summa). После ввода кода наша функция становится доступна в обычном окне Мастера функций (Вставка - Функция) в категории Определенные пользователем (User Defined):

После выбора функции выделяем ячейки с аргументами (с суммой, для которой надо посчитать НДС) как в случае с обычной функцией:

 

 

 

www.planetaexcel.ru

Лучшие книги по Visual Basic, скачать бесплатно

Посмотреть 10 лучших книг в разделе: ActionScript и FlashAjaxASP.NETHTML и CSSJavaScriptPHPSEOПрочее (Веб-разработка).NET1СAssemblerC/C++C#DelphiJavaPascalPerlPrologPythonRubyVisual BasicUMLXML и XSLTSQLДругие языки программированияАлгоритмы и математикаБазы данных и СУБДБезопасность и хакингДизайн интерфейсовОсновы программированияПрограммирование под LinuxПрограммирование мобильных устройствПрограммирование мультимедиаПроектирование и разработка ПОТестирование ПОБез категории

  • Автор: Стив Камминг
  • Издательство: Вильямс
  • Год: 2003
  • Язык: Русский
  • Страниц: 448
  • Формат: pdf
  • Размер: 5.5 Мб

Аннотация к книге VBA для "чайников":Эта книга поможет освоить интегрированную среду разработки VBA и научиться программировать в VBA с использованием объектов, их свойств, методов и событий. Обсуждаемые приемы программирования иллюстрируются примерами, которые можно сразу же опробовать на практике. Полученные знания вы сможете применить как для настройки и усовершенствования популярных офисных приложений, включая приложения Office XP, так и для создания собственных приложений. Книга рассчитана на тех, перед кем стоит задача быстро и без лишних усилий научиться программировать для Windows, используя VBA.

  • Автор: Г. З. Гарбер
  • Издательство: Солон-Пресс
  • Год: 2008
  • Язык: Русский
  • Страниц: 192
  • Формат: pdf
  • Размер: 107 Мб

Описание книги Основы программирования на Visual Basic и VBA в Excel 2007:Рассматриваются основные элементы среды разработки программ, а также базовые конструкции алгоритмических языков Visual Basic и VBA (Visual Basic для приложений). В качестве пользовательского интерфейса программы (макроса) используются стандартные окна Windows, текстовые файлы, формы, таблица Excel. Рассматривается также вопрос разработки пользовательских функций Excel.

  • Автор: С. Н. Лукин
  • Издательство: Диалог-МИФИ
  • Год: 2001
  • Язык: Русский
  • Страниц: 544
  • Формат: doc
  • Размер: 4 Мб

Описание книги Visual Basic. Самоучитель для начинающих:Это самоучитель. То есть написана книга с расчетом на то, что, изучив ее без посторонней помощи, вы сможете без посторонней помощи составлять программы на Visual Basic и выполнять их на компьютере тоже без посторонней помощи. Автор приложил специальные усилия для того, чтобы изложение было понятным. Все объясняется на примерах. Рассмотрение почти каждой темы заканчивается задачами на составление программы (всего таких задач – 132). Подавляющее большинство задач снабжено ответами, так что читатель может эффективно контролировать усвоение материала.

  • Автор: Зиборов В. В.
  • Издательство: БХВ-Петербург
  • Год: 2010
  • Язык: Русский
  • Страниц: 336
  • Формат: djvu
  • Размер: 44 Мб

Описание книги Visual Basic 2010 на примерах:Рассмотрено более сотни типичных примеров, встречающихся в практике реального программирования для платформы .NET Framework в среде Microsoft Visual Basic 2010: работа с экранной формой и элементами управления, обработка событий мыши и клавиатуры, чтение/запись текстовых и бинарных файлов, редактирование графических данных, управление буфером обмена, ввод/вывод табличных данных, решение системы уравнений, использование функций MS Word, MS Excel и AutoCAD, обработка баз данных с использованием технологии ADO.NET, разработка веб-приложений, создание веб-служб и многое другое.

  • Автор: Сафронов И.К.
  • Издательство: БХВ-Петербург
  • Год: 2008
  • Язык: Русский
  • Страниц: 401
  • Формат: pdf
  • Размер: 29 Мб

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

  • Автор: Л. Д. Слепцова
  • Издательство: Диалектика, Вильямс
  • Год: 2010
  • Язык: Русский
  • Страниц: 432
  • Формат: djvu
  • Размер: 23 Мб

Описание книги Программирование на VBA в Microsoft Office 2010:Книга предназначена для индивидуального обучения, написана простым, доступным языком и рассчитана на пользователей с любым уровнем компьютерных знаний. Книга содержит множество практических примеров, а выполнение всех приведенных пошаговых инструкций и практическое применение описанных приемов работы непосредственно при чтении книги поможет быстро научиться создавать собственные программы на языке VBA.

  • Автор: С. А. Малышев
  • Издательство: Наука и техника
  • Год: 2001
  • Язык: Русский
  • Страниц: 496
  • Формат: pdf
  • Размер: 58 Мб

Описание книги Самоучитель VBA. Как это делается в Word, Excel, Access:Идея этой книги родилась во время преподавания автором курса основ программирования на VBA в одной из гимназий Санкт-Петербурга. Программа обучения была новой и автору не удавалось найти на прилавках учебное пособие, вмещающее в себя с одной стороны - справочный материал, а с другой - небольшие примеры применения элементов языка, свойств и методов объектов, чтобы предложить его ученикам в качестве теоретического материала.

  • Автор: Л. Д. Слепцова
  • Издательство: Вильямс
  • Год: 2004
  • Язык: Русский
  • Страниц: 384
  • Формат: pdf
  • Размер: 35 Мб

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

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

  • Оригинальное название: Writing Excel Macros with VBA
  • Второе издание
  • Автор: С. Роман
  • Издательство: Питер
  • Год: 2004
  • Язык: Русский
  • Страниц: 508
  • Формат: djvu
  • Размер: 8 Мб

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

  • Оригинальное название: Excel 2003 Power Programming with VBA
  • Автор: Джон Уокенбах
  • Издательство: Вильямс
  • Год: 2006
  • Язык: Русский
  • Страниц: 800
  • Формат: pdf
  • Размер: 10 Мб

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

forcoder.ru


Смотрите также