Практические примеры программ на vba. Примеры макросов в Excel. Диалоговое VBA сообщение msgBox

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

Что такое VBA

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

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

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

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

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

Главным из них является Application, соответствующий самой программе Excel. Затем следуют Workbooks, Worksheets, а также Range. Например, для обращения к ячейке A1 на конкретном листе следует указать путь с учетом иерархии.

Что касается понятия "коллекция", то это группа объектов того же класса, которая в записи имеет вид ChartObjects. Ее отдельные элементы также являются объектами.

Следующее понятие — свойства. Они являются необходимой характеристикой любого объекта. Например, для Range — это Value или Formula.

Методы — это команды, показывающие, что требуется сделать. При написании кода в VBA их необходимо отделять от объекта точкой. Например, как будет показано в дальнейшем, очень часто при программировании в "Эксель" используют команду Cells(1,1).Select. Она означает, что необходимо выбрать ячейку с координатами

Вместе с ней нередко используется Selection.ClearContents. Ее выполнение означает очистку содержимого выбранной ячейки.

Как начать

Затем необходимо перейти в приложение VB, для чего достаточно воспользоваться комбинацией клавиш «Alt» и «F11». Далее:

  • в строке меню, расположенном в верхней части окна, нажимают на иконку рядом с иконкой Excel;
  • выбирают команду Mudule;
  • сохраняют, нажав на иконку с изображением ;
  • пишут, скажем так, набросок кода.

Он выглядит следующим образом:

Sub program ()

"Наш код

Обратите внимание, что строка «"Наш код» будет выделена другим цветом (зеленым). Причина в апострофе, поставленном в начале строки, который обозначает, что далее следует комментарий.

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

Макросы в Excel

За таким названием скрываются программы, написанные на языке Visual Basic for Application. Таким образом, программирование в Excel — это создание макросов с нужным кодом. Благодаря этой возможности табличный процессор Microsoft саморазвивается, подстраиваясь под требования конкретного пользователя. Разобравшись с тем, как создавать модули для написания макросов, можно приступать к рассмотрению конкретных примеров программ VBA Excel. Лучше всего начать с самых элементарных кодов.

Пример 1

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

Для этого:

  • открывают вкладку «Вид»;
  • переходят на пиктограмму «Макросы»;
  • жмут на «Запись макроса»;
  • заполняют открывшуюся форму.

Для простоты в поле «Имя макроса» оставляют «Макрос1», а в поле «Сочетание клавиш» вставляют, например, hh (это значит, что запустить программку можно будет блиц-командой «Ctrl+h»). Нажимают Enter.

Теперь, когда уже запущена запись макроса, производят копирование содержимого какой-либо ячейки в другую. Возвращаются на исходную пиктограмму. Нажимают на «Запись макроса». Это действие означает завершение программки.

  • вновь переходят на строку «Макросы»;
  • в списке выбирают «Макрос 1»;
  • нажимают «Выполнить» (то же действие запускается начатием сочетания клавиш «Ctrl+hh»).

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

Имеет смысл увидеть, как выглядит код. Для этого вновь переходят на строку «Макросы» и нажимают «Изменить» или «Войти». В результате оказываются в среде VBA. Собственно, сам код макроса находится между строками Sub Макрос1() и End Sub.

Если копирование было выполнено, например, из ячейки А1 в ячейку C1, то одна из строк кода будет выглядеть, как Range(“C1”).Select. В переводе это выглядит, как «Диапазон(“C1”).Выделить», иными словами осуществляет переход в VBA Excel, в ячейку С1.

Активную часть кода завершает команда ActiveSheet.Paste. Она означает запись содержания выделенной ячейки (в данном случае А1) в выделенную ячейку С1.

Пример 2

Циклы VBA помогают создавать различные макросы в Excel.

Циклы VBA помогают создавать различные макросы. Предположим, что имеется функция y=x + x 2 + 3x 3 - cos(x). Требуется создать макрос для получения ее графика. Сделать это можно только, используя циклы VBA.

За начальное и конечное значение аргумента функции берут x1=0 и x2=10. Кроме того, необходимо ввести константу — значение для шага изменения аргумента и начальное значение для счетчика.

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

Sub programm()

shag = 0.1

Do While x1 < x2 (цикл будет выполняться пока верно выражение x1 < x2)

y=x1 + x1^2 + 3*x1^3 - Cos(x1)

Cells(i, 1).Value = x1 (значение x1 записывается в ячейку с координатами (i,1))

Cells(i, 2).Value = y (значение y записывается в ячейку с координатами (i,2))

i = i + 1 (действует счетчик);

x1 = x1 + shag (аргумент изменяется на величину шага);

End Sub.

В результате запуска данного макроса в "Эксель" получаем два столбца, в первом из которых записаны значения для x, а во втором — для y.

Затем по ним строится график способом, стандартным для "Эксель".

Пример 3

Для реализации циклов в VBA Excel 2010, как и в других версиях, наряду с уже приведенной конструкцией Do While используется For.

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

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

For i = 1 to 10 Next

Команда переводится на «человеческий» язык, как «Повторять от 1 до 10 с шагом один».

Если ставится задача получить столбец с квадратами, например, всех нечетных чисел из диапазона от 1 до 11, то пишем:

For i = 1 to 10 step 1 Next.

Здесь step — шаг. В данном случае он равен двум. По умолчанию отсутствие этого слова в цикле означает, что шаг единичный.

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

В целом код будет выглядеть, как:

Sub program()

For i = 1 To 10 Step 1 (можно записать просто For i = 1 To 10)

Cells(i, 1).Value = i ^ 2 (т.е. в ячейку (i,1) записывается значение квадрата i)

Next (в некотором смысле играет роль счетчика и означает еще один запуск цикла)

End Sub.

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

Пример 4

В повседневной жизни сплошь и рядом возникает необходимость принять то или иное решение в зависимости от какого-то условия. Не обойтись без них и в VBA Excel. Примеры программ, где дальнейший ход выполнения алгоритма выбирается, а не предопределен изначально, чаще всего используют конструкцию If …Then (для сложных случаев) If …Then …END If.

Рассмотрим конкретный случай. Предположим, необходимо создать макрос для "Эксель", чтобы в ячейку с координатами (1,1) было записано:

1, если аргумент положительный;

0, если аргумент нулевой;

-1, если аргумент отрицательный.

Создание такого макроса для "Эксель" начинается стандартным способом, через использование «горячих» клавиш Alt и F11. Далее записывается следующий код:

Sub program()

x= Cells(1, 1).Value (эта команда присваивает x значение содержимого ячейки с координатами (1, 1))

If x>0 Then Cells(1, 1).Value = 1

If x=0 Then Cells(1, 1).Value = 0

If x<0 Then Cells(1, 1).Value = -1

End Sub.

Остается запустить макрос и получить в "Эксель" нужное значение для аргумента.

Функции VBA

Как вы уже могли заметить, программировать в самом известном табличном процессоре Microsoft не так уж сложно. Особенно, если научиться применять функции VBA. Всего в этом языке программирования, созданном специально для написания приложений в "Эксель" и Word, около 160 функций. Их можно разделить на несколько больших групп. Это:

  • Математические функции. Применив их к аргументу, получают значение косинуса, натурального логарифма, целой части и пр.
  • Финансовые функции. Благодаря их наличию и используя программирование в Excel, можно получать эффективные инструменты для ведения бухгалтерского учета и осуществления финансовых расчетов.
  • Функции обработки массивов. К ним относятся Array, IsArray; LBound; UBound.
  • Функции VBA Excel для строки. Это достаточно многочисленная группа. В нее входят, например, функции Space для создания строки с числом пробелов, равных целочисленному аргументу, или Asc для перевода символов в код ANSI. Все они имеют широкое применение и позволяют работать со строками в "Эксель", создавая приложения, значительно облегчающие работу с этими таблицами.
  • Функции преобразования типа данных. Например, CVar возвращает значение аргумента Expression, преобразовав его в тип данных Variant.
  • Функции работы с датами. Они значительно расширяют стандартные Так, функция WeekdayName возвращает название (полное или частичное) дня недели по его номеру. Еще более полезной является Timer. Он выдает число секунд, которые прошли с полуночи до конкретного момента дня.
  • Функции для преобразования числового аргумента в разные системы счисления. Например, Oct выдает в восьмеричное представление числа.
  • Функции форматирования. Важнейшей из них является Format. Она возвращает значение типа Variant с выражением, отформатированным согласно инструкциям, которые заданы в описании формата.
  • и пр.

Изучение свойств этих функций и их применение позволит значительно расширить сферу применения "Эксель".

Пример 5

Попробуем перейти к решению более сложных задач. Например:

Дан бумажный документ отчета фактического уровня издержек предприятия. Требуется:

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

Рассмотрим один из вариантов решения.

Создание шаблона

Все действия осуществляются на стандартном листе в Excel. Резервируются свободные ячейки для внесения данных по названию компании-потребителя, сумме издержек, их уровня, товарооборота. Так как количество компаний (обществ), относительно которых составляется отчет, не зафиксировано, ячейки для внесения значений по итогам и ФИО специалиста заранее не резервируют. Рабочему листу присваивается новое название. Например, "Օтчет".

Переменные

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

  • NN- номер текущей строки таблицы;
  • TP и TF - планируемый и фактический товарооборот;
  • SF и SP - фактическая и планируемая сумма издержек;
  • IP и IF - планируемый и фактически уровень издержек.

Обозначим теми же буквами, но с «приставкой» Itog накопление итога по данному столбцу. Например, ItogTP - касается столбца таблицы, озаглавленного, как «планируемый товарооборот».

Решение задачи с использованием программирования на VBA

Используя введенные обозначения, получаем формулы для отклонений. Если требуется осуществить расчет в % имеем (F - P) / P * 100, а в сумме — (F - P).

Результаты этих вычислений можно лучше всего сразу внести в соответствующие ячейки таблицы "Эксель".

Для итогов по факту и прогнозу получают по формулам ItogP=ItogP + P и ItogF=ItogF+ F.

Для отклонений используют = (ItogF - ItogP) / ItogP * 100, если расчет ведется в процентах, а в случае суммарной величины — (ItogF - ItogP).

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

Перед запуском созданной программы, требуется сохранить рабочую книгу, например, под названием "Отчет1.xls".

Клавишу «Создать отчетную таблицу» требуется нажать всего 1 раз после ввода заголовочной информации. Следует знать и другие правила. В частности, кнопка «Добавить строку» должна нажиматься каждый раз после ввода в таблицу значений по каждому виду деятельности. После занесения всех данных требуется нажать кнопку «Закончить» и затем переключиться в окно "Эксель".

Теперь вы знаете, как решать задачи для Excel с помощью макросов. Умение применять vba excel (примеры программ см. выше) может понадобиться и для работы в среде самого популярного на данный момент текстового редактора "Ворд". В частности, можно путем записи, как показано в самом начале статьи, или через написание кода создавать кнопки меню, благодаря которым многие операции над текстом можно будет осуществлять нажатием дежурных клавиш или через вкладку "Вид" и пиктограмму "Макросы".

Цель работы – Изучение основных операторов и реализации основных конструкций программирования в языке VBA.

4.1 Основные этапы работы с программами на vba в Excel

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

    в Excel выбрать из меню команду Сервис – Макрос – Редактор Visual Basic ;

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

В начале модуля может указываться инструкция Option Explicit . Если она указана, то все переменные, используемые в программе, необходимо будет объявлять в операторе Dim (подробнее об этом см. в подразделе 4.3).

В некоторых случаях, в зависимости от настройки среды VBA, инструкция Option Explicit указывается в начале модуля автоматически. Если программист желает использовать переменные, не объявляя их в операторе Dim , то инструкцию Option Explicit необходимо удалить.

Для запуска программы на выполнение необходимо выбрать из меню команду Run – Run Sub/UserForm .

4.2 Простейший пример программы на языке vba

Пример 4.1 – Программа, возводящаяуказанное число a в указанную степень b .

Dim a As Single, b As Single

a = InputBox(“Введите основание: ”)

b = InputBox(“Введите показатель степени: ”)

x = a^b ‘Возведение в степень

MsgBox(“Результат равен ” & x)

Здесь слово Sub обозначает начало процедуры; ее имя в данном случае – primer 4_1 . Программа на языке VBA всегда состоит из одной или нескольких процедур (в данном случае – из одной).

Символ ‘ (одиночная кавычка) обозначает начало комментария. Текст комментария может быть любым.

Dim – оператор объявления переменных. В данном случае указано, что переменные a и b имеют тип Single . т.е. могут представлять собой как целые, так и дробные числа. Подробнее типы данных и объявление переменных будут рассмотрены в подразделе 4.3.

InputBox – функция для ввода значения переменной. Строка a = InputBox (“Введите основание: ”) означает, что вводится значение переменной a ; при этом на экран выводится сообщение “Введите основание:” . Строка x = a ^ b – оператор присваивания: вычисляется значение правой части (в данном случае переменная a возводится в степень b ), и результат присваивается переменной, указанной в левой части (в данном случае – переменной x ). Строка MsgBox (“Результат равен ” & x ) означает, что на экран выводится сообщение “Результат равен ” и значение переменной x .

Примечание – Знак & в функции MsgBox предназначен для сцепления нескольких элементов данных, которые требуется вывести на экран, в данном примере – строки “Результат равен” и переменной x . Аналогично знак & может использоваться в функции InputBox (примеры такого использования будут приведены далее). Перед знаком & и после него обязательно должны быть указаны пробелы.

В одной строке можно разместить несколько операторов языка VBA. Для этого они разделяются символами «двоеточие». Так, программу из примера 4.1 можно было записать, например, следующим образом:

‘Первый пример программы на VBA

Dim a As Single, b As Single

a = InputBox(“Введите основание: ”) : b = InputBox(“Введите показатель степени: ”)

x = a^b: MsgBox(“Результат равен ” & x) ‘Возведение в степень и вывод результата

В рассмотренном примере использована процедура, называемая подпрограммой. Такая процедура начинается со слова Sub . В программе на VBA всегда имеется хотя бы одна процедура-подпрограмма. Кроме того, в языке VBA имеется еще один вид процедур – функции. Процедура-функция начинается со слова Function . Использование таких процедур будет рассмотрено в подразделе 4.9.


Книга: Использование макросов в Excel.

Страниц: 507

Формат: DJVU
Размер: 8.02 Mb

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

Книга: Интенсивный курс программирования в Excel за выходные

Издательство: Диалектика
Страниц: 421
Формат: DJVU
Размер: 12.6 Мб
Качество: Нормальное
Язык: Русский
Жанр: программирование
Год издания: 2004
ISBN: 5-8459-0687-3

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

Книга: Программирование на VBA 2002

Качество: Нормальное
Язык: Русский
Жанр: программирование

В книге содержится курс по программированию на Visual Basic for Applications (VBA), являющимся базовым языком в приложениях Microsoft Office (Word, Excel, Access, PowerPoint, FrontPage, Visio и др.). Книга предназначена для начинающих программировать в среде Windows с применением Word-, Excel-, PowerPoint-объектов. Часть книги посвящена вопросам разработки Office-приложений, использующих базы данных, хранимых как в отдельных файлах, так и на удаленных серверах. Материала книги достаточно для изучения основ языка Visual Basic и создания простых макросов, помогающих автоматизировать рутинную повторяющуюся работу с документами, электронными таблицами, диаграммами, презентациями и т.д., а также для разработки довольно сложных приложений обработки баз данных с использованием диалоговых окон, обеспечивающих пользователя самыми современными интерфейсными средствами. Большинство примеров в книге посвящены актуальным в настоящее время вопросам коммерческой деятельности, поэтому книга будет очень полезной менеджерам различных уровней, которым, по-видимому, и предназначен как Microsoft Office, так и встроенный язык программирования VBA.
Приложения в конце книги могут послужить удобным справочником при работе как с VBA, так и с обычным VB.

Книга: Профессиональное программирование на VBA в Excel 2003
Джон Уокенбах
Издательство: Вильямс
Формат: PDF
Размер: 11 Мб
Качество: Отличное
Язык: Русский
Год издания: 2005
ISBN: 5-8459-0771-3
К книге прилагается диск

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

Pdf-версия отредактирована и любезно предоставлена участником .

Книга: :
Джон Уокенбах
Издательство: Wiley
Формат: PDF
Страниц: 1308
Размер: 11,9 Мб
Качество: Отличное
Язык: Английский
Год издания: 2010
This book focuses on Visual Basic for Applications (VBA), the programming language built into Excel (and other applications that make up Microsoft Office). More specifically, it will show you how to write programs that automate various tasks in Excel. This book covers everything from recording simple macros through creating sophisticated user-oriented applications and utilities. This book does not cover Microsoft Visual Studio Tools for Office (VSTO). VSTO is a relatively new technology that uses Visual Basic .NET and Microsoft Visual C#. VSTO can also be used to control Excel and other Microsoft Office applications.
This is not a book for beginning Excel users. If you have no experience with Excel, a better choice might be Excel 2010 Bible, which provides comprehensive coverage of all the features of Excel. That book is meant for users of all levels.

Книга: : Профессиональное программирование на VBA в Excel 2010
Джон Уокенбах
Издательство: Диалектика
Формат: PDF
Страниц: 920
Размер: 22,1 Мб
Качество: Отличное
Язык: Русский
Год издания: 2010 Предмет рассмотрения этой книги - язык программирования Visual Basic for Applications (VBA), который встроен в Excel, а также в другие приложения, входящие в состав Microsoft Office. Здесь подробно описано создание программ, автоматизирую­щих выполнение различных задач в Excel, а также рассматривается широкий круг других тем - от написания простейших макросов до создания сложнейших приложений и ути­лит, рассчитанных на взаимодействие с пользователем. В этой книге нет описания программного пакета Microsoft Visual Studio Tools for Office (VSTO). Он представляет собой воплощение относительно новой технологии, ис­пользующей Visual Basic .NET и Microsoft Visual С#. Технология VSTO также может применяться для управления поведением программы Excel и других приложений Microsoft Office.

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


Книга: Самоучитель VBA
Гарнаев А.
Издательство: bhv
Страниц: 512
Формат: html с картинками в rar
ISBN: 5-8206-0067-3
Размер: 2,22 Мб

Отличное

Язык: Английский
Год издания: 2009

Microsoft Excel is much more than just a spreadsheet. With the introduction of the Visual Basic Editor in Excel 97, followed by the significantly improved stability of Excel 2000, Excel became a respected development platform in its own right. Excel applications are now found alongside those based on C++, Java, and the .NET development platform, as part of the core suite of mission-critical corporate applications.
Unfortunately, Excel is still too often thought of as a hobbyist platform, that people only develop Excel applications in their spare time to automate minor tasks. A brief look at many Excel VBA books seems to confirm this opinion. These books focus on the basics of automating Excel tasks using VBA. This book is the first of its kind in providing a detailed explanation of how to use Excel as the platform for developing professional quality applications.
While most other major development platforms seem to have a de facto standard text that explains the commonly agreed best practices for architecting, designing, and developing applications using that platform, until now Excel has not. This book attempts to fill that gap. The authors are professional Excel developers who create Excel-based applications for clients ranging from individuals to the largest multinational corporations. This book explains the approaches we use when designing, developing, distributing, and supporting the applications we write for our clients.
Эту книгу предоставил пользователь

Следующие простые примеры макросов Excel иллюстрируют некоторые возможности и приёмы, описанные в самоучителе по Excel VBA .

Макрос Excel: пример 1

Первоначально эта процедура Sub была приведена, как пример использования комментариев в коде VBA. Однако, здесь также можно увидеть, как объявляются переменные, как работают ссылки на ячейки Excel, использование цикла For , условного оператора If и вывод на экран окна сообщения.

"Процедура Sub выполняет поиск ячейки, содержащей заданную строку "в диапазоне ячеек A1:A100 активного листа Sub Find_String(sFindText As String) Dim i As Integer "Целое число типа Integer, используется в цикле For Dim iRowNumber As Integer "Целое число типа Integer для хранения результата iRowNumber = 0 "Просматривает одну за другой ячейки A1:A100 до тех пор, пока не будет найдена строка sFindText For i = 1 To 100 If Cells(i, 1).Value = sFindText Then "Если совпадение с заданной строкой найдено "сохраняем номер текущей строки и выходим из цикла For iRowNumber = i Exit For End If Next i "Сообщаем пользователю во всплывающем окне найдена ли искомая строка "Если заданная строка найдена, указываем в какой ячейке найдено совпадение If iRowNumber = 0 Then MsgBox "Строка " & sFindText & " не найдена" Else MsgBox "Строка " & sFindText & " найдена в ячейке A" & iRowNumber End If End Sub

Макрос Excel: пример 2

Следующая процедура Sub – пример использования цикла Do While . Здесь также можно увидеть, как объявляются переменные, работу со ссылками на ячейки Excel и применение условного оператора If .

"Процедура Sub выводит числа Фибоначчи, не превышающие 1000 Sub Fibonacci() Dim i As Integer "Счётчик для обозначения позиции элемента в последовательности Dim iFib As Integer "Хранит текущее значение последовательности Dim iFib_Next As Integer "Хранит следующее значение последовательности Dim iStep As Integer "Хранит размер следующего приращения "Инициализируем переменные i и iFib_Next i = 1 iFib_Next = 0 "Цикл Do While будет выполняться до тех пор, пока значение "текущего числа Фибоначчи не превысит 1000 Do While iFib_Next < 1000 If i = 1 Then "Особый случай для первого элемента последовательности iStep = 1 iFib = 0 Else "Сохраняем размер следующего приращения перед тем, как перезаписать "текущее значение последовательности iStep = iFib iFib = iFib_Next End If "Выводим текущее число Фибоначчи в столбце A активного рабочего листа "в строке с индексом i Cells(i, 1).Value = iFib "Вычисляем следующее число Фибоначчи и увеличиваем индекс позиции элемента на 1 iFib_Next = iFib + iStep i = i + 1 Loop End Sub

Макрос Excel: пример 3

Эта процедура Sub просматривает ячейки столбца A активного листа до тех пор, пока не встретит пустую ячейку. Значения записываются в массив. Этот простой макрос Excel показывает работу с динамическими массивами, а также использование цикла Do Until . В данном примере мы не будет совершать какие-либо действия с массивом, хотя в реальной практике программирования после того, как данные записаны в массив, над ними такие действия, как правило, совершаются.

"Процедура Sub сохраняет значения ячеек столбца A активного листа в массиве Sub GetCellValues() Dim iRow As Integer "Хранит номер текущей строки Dim dCellValues() As Double "Массив для хранения значений ячеек iRow = 1 ReDim dCellValues(1 To 10) "Цикл Do Until перебирает последовательно ячейки столбца A активного листа "и извлекает их значения в массив до тех пор, пока не встретится пустая ячейка Do Until IsEmpty(Cells(iRow, 1)) "Проверяем, что массив dCellValues имеет достаточный размер "Если нет – увеличиваем размер массива на 10 при помощи ReDim If UBound(dCellValues) < iRow Then ReDim Preserve dCellValues(1 To iRow + 9) End If "Сохраняем значение текущей ячейки в массиве dCellValues dCellValues(iRow) = Cells(iRow, 1).Value iRow = iRow + 1 Loop End Sub

Макрос Excel: пример 4

В этом примере процедура Sub считывает значения из столбца A рабочего листа Лист2 и выполняет с ними арифметические операции. Результаты заносятся в ячейки столбца A на активном рабочем листе. В этом макросе продемонстрировано использование объектов Excel. В частности, производится обращение процедурой Sub к объекту Columns , и показано, как доступ к этому объекту осуществляется через объект Worksheet . Показано так же, что при обращении к ячейке или диапазону ячеек на активном листе, имя этого листа при записи ссылки указывать не обязательно.

"Процедура Sub при помощи цикла считывает значения в столбце A рабочего листа Лист2, "выполняет с каждым значением арифметические операции и записывает результат в "столбец A активного рабочего листа (Лист1) Sub Transfer_ColA() Dim i As Integer Dim Col As Range Dim dVal As Double "Присваиваем переменной Col столбец A рабочего листа Лист 2 Set Col = Sheets("Лист2").Columns("A") i = 1 "При помощи цикла считываем значения ячеек столбца Col до тех пор, "пока не встретится пустая ячейка Do Until IsEmpty(Col.Cells(i)) "Выполняем арифметические операции над значением текущей ячейки dVal = Col.Cells(i).Value * 3 - 1 "Следующая команда записывает полученный результат в столбец A активного рабочего листа "Имя листа в ссылке указывать нет необходимости, так как это активный лист. Cells(i, 1) = dVal i = i + 1 Loop End Sub

Макрос Excel: пример 5

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

"Данный код показывает окно с сообщением, если на текущем рабочем листе "выбрана ячейка B1 Private Sub Worksheet_SelectionChange(ByVal Target As Range) "Проверяем выбрана ли ячейка B1 If Target.Count = 1 And Target.Row = 1 And Target.Column = 2 Then "Если ячейка B1 выбрана, выполняем необходимое действие MsgBox "Вы выбрали ячейку B1" End If End Sub

Макрос Excel: пример 6

На примере этой процедуры показано использование операторов On Error и Resume для обработки ошибок. В данном коде также показан пример открытия и чтения данных из файла.

"Процедура Sub присваивает аргументам Val1 и Val2 значения ячеек A1 и B1 "из рабочей книги Data.xlsx, находящейся в папке C:\Documents and Settings Sub Set_Values(Val1 As Double, Val2 As Double) Dim DataWorkbook As Workbook On Error GoTo ErrorHandling "Открываем рабочую книгу с данными Set DataWorkbook = Workbooks.Open("C:\Documents and Settings\Data") "Присваиваем переменным Val1 и Val2 значения из заданной рабочей книги Val1 = Sheets("Лист1").Cells(1, 1) Val2 = Sheets("Лист1").Cells(1, 2) DataWorkbook.Close Exit Sub ErrorHandling: "Если файл не найден, пользователю будет предложено поместить искомый файл "в нужную папку и после этого продолжить выполнение макроса MsgBox "Файл Data.xlsx не найден! " & _ "Пожалуйста добавьте рабочую книгу в папку C:\Documents and Settings и нажмите OK" Resume End Sub

Содержание этой страницы будет наращиваться постоянно...
  1. Программа-калькулятор "Возведение чисел в большие степени".

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

  2. С форума от Jonny323. VBA Word

    Привет всем. Очень нужен макрос, думаю не сложный: Печать первой страницы в 6 экземплярах и 2ой страницы в 2 экземплярах.Заранее спасибо.

  3. ProgressBar на форме. VBA Excel

    Элемент управления, который показывает ход выполнения программы (сколько сделано работы из 100%)...

  4. Статистические подсчеты в выделенном тексте. VBA Word

    Создать в Word макрос, который определит количество слов, запятых и точек в произвольном тексте.
    Словами будем называть группы символов, разделенные пробелами (одним или несколькими) и не содержащие пробелов внутри себя. Внутри слова не могут находиться точки или запятые. Многоточие не считается за точки…

  5. Статистические подсчеты в тексте документа. Использование UserForm для ввода данных. VBA Word

    Создать в Word программу - В форме пользователь вводит слово или словосочетание, а программа просматривает весь текст и вставляет в конце документа введенное слово (словосочетание), рядом с которым перечислены все номера страниц, на которых это слово встречается. Совпадения номеров страниц не допускаются. То есть если указанное слово на странице 5 встречается три раза, номер 5 в выводе указывается только один раз. Форма должна состоять из следующих компонентов:
    - 1 TextBox для ввода слова (словосочетания);
    - 1 кнопка для выхода из программы;
    - 1 кнопка для запуска поиска и вставки результата в документ;
    - компонент типа Label с поясняющим текстом над строкой ввода;
    - Кроме того, на форме могут быть компоненты типа Frame;

  6. Работа с ListBox (Excel). Привязка, сортировка, множественный выбор...

  7. Программа для решения японской головоломки Судоку (Excel)

  8. Макросы выполнения запросов (т.е. формирование новой таблицы из базы данных Excel)

  9. Сортировка Хоара (алгоритм с wikipedia.org)

    Один из самых быстрых методов сортировки.
  10. Сортировка Слиянием (с использованием Хоара)

    Один из самых быстрых и оптимальных методов сортировки.
  11. VBA Excel: Программа расчета биоритмов человека

  12. Для blackarrow с programmersforum.ru

  13. Определить в какую координатную четверть
    попадает точка с заданными координатами А(а,b). VBA EXCEL.

  14. Представление целого числа прописью VBA EXCEL.

  15. ЛОГИКА.

    Решение квадратного уравнения.
  16. VBA EXCEL.

  17. VBA EXCEL. Задача о треугольнике. Массив, цикл, логика.

    По заданным размерам трех сторон треугольника - определить его вид (прямоугольный, тупоугольный, остроугольный или невозможно построить).
  18. Будильник (alarm clock) в Excel

  19. VBA EXCEL.

  20. VBA EXCEL.

  21. VBA EXCEL.

    Макрос, который в выделенном диапазоне представляет все отрицательные числа синим цветом, положительные - красным, нулевые – белым (или желтым).

  22. VBA EXCEL. Как скрыть или отобразить элементы листа.

    Иногда, требуется скрыть от пользователя некоторые возможности (как правило, скрывается размещение данных):
    - посещать другие листы данной книги (лучше не знать о них);
    - прокручивать (горизонтально и вертикально) лист
    - читать и изменять формулы в ячейках листа
    - скрывать линии столбцов и строк
    - скрывать заголовки (названия и номера) столбцов и строк
  23. VBA EXCEL. Добавить и удалить пункт меню.

    Не сложно добавить (удалить) собственный пункт в меню Excel. Это все описано в справке.
    Но куда интересней поручить эту работу макросу.
    Тогда появляется возможность при открытии конкретного документа формировать специальное, индивидуальное меню, а после его закрытия привести меню Excel в первоначальное состояние. (Данный пример кода работает только в MS Excel 2003, а в 2007 нужны изменения названий панелей управления)
  24. Клеточные автоматы VBA EXCEL.

  25. Метод Золотого сечения VBA EXCEL.

  26. Замена местами максимального и минимального значений ячеек выделенного диапазона. VBA Excel

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

  27. Строковая функция, возвращающая квадраты простых чисел от нуля до заданного числа. VBA Excel

    Составить в Excel функцию, получающую натуральное число N и возвращающее квадраты всех простых чисел от 0 до заданного натурального N.

  28. Пользовательская форма (UserForm) для ввода данных по кредитам коммерческого банка. VBA Excel

    Организуйте ввод сведений в таблицу, содержащую данные о выдаче долгосрочных кредитов коммерческим банком со следующими данными: код получателя кредита, наименование получателя кредита, дата выдачи кредита, срок (3-4 срока), на который выдан кредит (в днях), процент, сумма кредита, дата оплаты процентов по кредиту.

  29. Пользовательская форма (UserForm) для ввода данных по Регистрации туристов. VBA Excel

    на этом самом месте...