Программирование в эксель для начинающих

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

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

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

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

Примечание: Библиотеки предоставляют стандартные и дополнительные возможности работы с объектами Excel (ячейки, листы, книги и т.д.), файловой системы, изображениями, базами данных и другими.

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

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

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

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

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

Примечание: библиотеки, классы, функции и процедуры (методы), свойства и т.п. в Object Browser имеют различные обозначения, представленные набором пиктограмм. Краткая справка (поле №6) всегда указывает какой тип элемента выделен

Обращайте на это внимание, чтобы в дальнейшем лучше ориентироваться в работе с объектами

Примечание: Понятие объекта не относится к теме данной статьи и будет рассмотрено в следующих материалах.

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

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

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

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

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

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

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

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

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

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

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

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

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

Окна редактора Visual Basic

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

Окно проекта (Project)

Окно Project открывается в левой части редактора VBA (показано на картинке выше). В этом окне для каждой открытой рабочей книги создаётся проект VBA (VBA Project). Проект VBA – это набор всех объектов и модулей VBA, привязанных к текущей книге. Изначально в него входят:

  • Объект ЭтаКнига (ThisWorkbook), привязанный к книге Excel;
  • Объекты Лист (Sheet), привязанные к каждому листу текущей рабочей книги Excel.

Самостоятельно в проект можно добавить объекты Userform, Module и Class Module. Если Вы посмотрите на картинку выше, то увидите, что в проект VBA для книги Book1.xlsm добавлен объект Module с названием Module1.

Вот как можно создать новый объект Userform, Module или Class Module:

  • В окне Project выберите рабочую книгу, в которую нужно добавить объект, и кликните по ней правой кнопкой мыши.
  • В появившемся меню кликните Insert и в раскрывшемся меню выберите Userform, Module или Class Module.

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

  • Код, который относится к рабочей книге, должен быть введён в соответствующий объект ЭтаКнига (ThisWorkbook);
  • Код, который относится к рабочему листу, должен быть введён в соответствующий объект Лист (Sheet);
  • Код более общего характера должен быть введён в Module;
  • Код для нового объекта должен быть введён в Class Module;
  • Если нужно создать диалоговое окно для взаимодействия с пользователем, то можно использовать Userform.

Окно кода (Code)

Двойной щелчок мышью по любому объекту в окне Project открывает соответствующее окно Code, предназначенное для ввода кода VBA с клавиатуры. На одном из приведённых выше рисунков показано окно кода для Module1.

По мере ввода кода VBA в окно Code, редактор Visual Basic следит за правильностью ввода, ищет ошибки в коде и выделяет код, который требует исправления.

Окно свойств (Properties)

В окне Properties перечислены свойства объекта, который в момент создания (не в процессе выполнения программы) выделен в окне проекта. Эти свойства могут быть различными в зависимости от типа выделенного объекта (лист, книга, модуль и другие).

Окно отладчика (Immediate)

Окно Immediate можно отобразить в редакторе Visual Basic через меню View > Immediate Window или нажатием комбинации клавиш Ctrl+G. Это окно помогает при отладке кода. Оно выполняет роль области вывода для отладки выражений и позволяет вычислять отдельные выражения или выполнять строки кода по одной.

Например, введите выражение “?j” и нажмите Enter – в результате будет выведено текущее значение переменной j.

Окно переменных (Locals)

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

Окно отслеживания (Watches)

Окно Watches также очень помогает при отладке кода VBA, так как в нём можно увидеть значение, тип и контекст любого отслеживаемого выражения, которое задаст пользователь. Чтобы открыть окно Watches, нажмите Watch Window в меню View редактора Visual Basic. Также окно Watches будет открыто автоматически, если задать отслеживаемое выражение.

Чтобы задать отслеживаемое выражение, нужно:

  1. Выделить выражение в редактируемом коде VBA.
  2. В меню Debug редактора VBA нажать Quick Watch.
  3. Нажать Add.

Кроме рассмотренных, в меню редактора Visual Basic в Excel существует ещё множество параметров и команд, используемых при создании, выполнении и отладке кода VBA.

Пример 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.

Операторы объявленияDeclaration statements

Операторы объявления используются для именования и определения процедур, переменных, свойств, массивов и констант.You use declaration statements to name and define procedures, variables, properties, arrays, and constants. При объявлении программного элемента можно также определить его тип данных, уровень доступа и область.When you declare a programming element, you can also define its data type, access level, and scope. Дополнительные сведения см. в разделе Характеристики объявленных элементов.For more information, see Declared Element Characteristics.

Следующий пример содержит три объявления.The following example contains three declarations.

Первое объявление — это оператор.The first declaration is the statement. Вместе с его оператором сопоставления объявляется процедура с именем .Together with its matching statement, it declares a procedure named . Он также указывает, что это означает, что любой код, который может ссылаться на него, может вызывать его.It also specifies that is , which means that any code that can refer to it can call it.

Второе объявление — это оператор, который объявляет константу , указывая тип данных и значение 33.The second declaration is the statement, which declares the constant , specifying the data type and a value of 33.

Третье объявление — это оператор, объявляющий переменную .The third declaration is the statement, which declares the variable . Тип данных — это конкретный объект, а именно объект, созданный из класса.The data type is a specific object, namely an object created from the class. Можно объявить переменную для любого простейшего типа данных или любого типа объекта, предоставляемого в используемом приложении.You can declare a variable to be of any elementary data type or of any object type that is exposed in the application you are using.

Начальные значенияInitial Values

При выполнении кода, содержащего оператор объявления, Visual Basic резервирует память, необходимую для объявленного элемента.When the code containing a declaration statement runs, Visual Basic reserves the memory required for the declared element. Если элемент содержит значение, Visual Basic инициализирует его значением по умолчанию для его типа данных.If the element holds a value, Visual Basic initializes it to the default value for its data type. Дополнительные сведения см. в разделе «поведение» в операторе Dim.For more information, see «Behavior» in Dim Statement.

Начальное значение переменной можно присвоить как часть объявления, как показано в следующем примере.You can assign an initial value to a variable as part of its declaration, as the following example illustrates.

Если переменная является объектной переменной, можно явно создать экземпляр его класса при объявлении с помощью ключевого слова New operator , как показано в следующем примере.If a variable is an object variable, you can explicitly create an instance of its class when you declare it by using the New Operator keyword, as the following example illustrates.

Обратите внимание, что начальное значение, указанное в операторе объявления, не присваивается переменной до тех пор, пока выполнение не достигнет оператора объявления.Note that the initial value you specify in a declaration statement is not assigned to a variable until execution reaches its declaration statement. До этого времени переменная будет содержать значение по умолчанию для его типа данных.Until that time, the variable contains the default value for its data type

Создание таблиц, виды и особенности содержащихся в них данных

Рабочее пространство листа Microsoft Excel разделено условно невидимыми границами на столбцы и строки, размеры которых можно регулировать, «перетаскивая» наведенный на границу ползунок. Для быстрого объединения ячеек служит соответствующая иконка в блоке «Выравнивание» вкладки «Главная».

Во вкладке «Главная» в блоке «Выравнивание» находятся инструменты для объединения и выравнивания ячеек

Столбцы обозначены буквами латинского алфавита (A, B, C,… AA, AB, AC…), строки пронумерованы. Таким образом, каждая ячейка имеет свой уникальный адрес. Вот пример выделения ячейки C7.

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

Ячейка может содержать числовое значение, текст с заданным форматированием, символы, формулы и другие элементы. Числа по умолчанию располагаются в правой части ячейки, текст – в левой. При выделении ячейки с формулой последняя отображается в строке «fx».

Ячейки могут содержать числовое значение, текст, символы, формулы и другие элементы

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

Выделяем ячейки, во вкладке «Главная» кликом мышки нажимаем на подходящие значки инструментов для форматирования

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

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

Выбрав в контекстном меню пункт «Формат ячейки», Вы получите расширенные возможности форматирования выбранного массива данных.

Кликаем по пункту «Формат ячеек»

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

Окно «Формат ячеек» с инструментами для более точной настройки и форматирования ячеек

Кроме того, можно применить уже готовые стили, сгруппированные в пунктах «Условное форматирование», «Форматировать как таблицу» и «Стили ячеек».

В группе «Стили» во вкладке «Главная» можно выбрать готовый стиль

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

Готовые шаблоны пункта «Форматировать как таблицу»

Кроме уже рассмотренных групп «Шрифт», «Выравнивание» и «Стили», вкладка «Главная» содержит несколько менее востребованных, но все же необходимых в ряде случаев элементов. На ней можно обнаружить:

  • «Буфер обмена» – иконки копирования, вырезания и вставки информации (они дублируются сочетаниями клавиш «Ctrl+C», «Ctrl+X» и «Ctrl+V» соответственно);

  • «Число» – обеспечивает быстрое переключение между текстовым, числовым, процентным и другими форматами отображения информации, а также простые операции формализации данных, например, изменение числа знаков после запятой в дробных числах;

  • «Ячейки» – содержит команды добавления и удаления строк, столбцов, массивов, а также простые функции форматирования их размера и видимости;

  • «Редактирование» – упрощает поиск, сортировку и фильтрацию данных, включает несколько быстрых формул, выполняет команды автозаполнения и автоочистки.

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

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

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

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

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

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

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

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

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

Инструкция по работе в Excel

Книга Excel состоит из листов. Лист – рабочая область в окне. Его элементы:

Чтобы добавить значение в ячейку, щелкаем по ней левой кнопкой мыши. Вводим с клавиатуры текст или цифры. Жмем Enter.

Значения могут быть числовыми, текстовыми, денежными, процентными и т.д. Чтобы установить/сменить формат, щелкаем по ячейке правой кнопкой мыши, выбираем «Формат ячеек». Или жмем комбинацию горячих клавиш CTRL+1.

Для числовых форматов можно назначить количество десятичных знаков.

Примечание. Чтобы быстро установить числовой формат для ячейки — нажмите комбинацию горячих клавиш CTRL+SHIFT+1.

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

Отредактируем значение ячеек:

  1. Щелкнем по ячейке со словом левой кнопкой мыши и введем число, например. Нажимаем ВВОД. Слово удаляется, а число остается.
  2. Чтобы прежнее значение осталось, просто изменилось, нужно щелкнуть по ячейке два раза. Замигает курсор. Меняем значение: удаляем часть текста, добавляем.
  3. Отредактировать значения можно и через строку формул. Выделяем ячейку, ставим курсор в строку формул, редактируем текст (число) – нажимаем Enter.

Для удаления значения ячейки используется кнопка Delete.

Чтобы переместить ячейку со значением, выделяем ее, нажимаем кнопку с ножницами («вырезать»). Или жмем комбинацию CTRL+X. Вокруг ячейки появляется пунктирная линия. Выделенный фрагмент остается в буфере обмена.

Ставим курсор в другом месте рабочего поля и нажимаем «Вставить» или комбинацию CTRL+V.

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

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

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

Чтобы выделить столбец, нажимаем на его имя (латинскую букву). Для выделения строки – на цифру.

Для изменения размеров строк или столбцов передвигаем границы (курсор в этом случае принимает вид крестика, поперечная перекладина которого имеет на концах стрелочки).

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

Чтобы сохранить ширину столбца, но увеличить высоту строки, нажимаем на ленте кнопок «Перенос текста».

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

Объединим несколько ячеек: выделим их и нажмем кнопку «Объединить и поместить в центре».

В Excel доступна функция автозаполнения. Вводим в ячейку А2 слово «январь». Программа распознает формат даты – остальные месяцы заполнит автоматически.

Цепляем правый нижний угол ячейки со значением «январь» и тянем по строке.

Апробируем функцию автозаполнения на числовых значениях. Ставим в ячейку А3 «1», в А4 – «2». Выделяем две ячейки, «цепляем» мышью маркер автозаполнения и тянем вниз.

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

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

Таким же способом можно копировать строки.

Удалим столбец: выделим его – правой кнопкой мыши – «Удалить». Или нажав комбинацию горячих клавиш: CTRL+»-«(минус).

Чтобы вставить столбец, выделяем соседний справа (столбец всегда вставляется слева), нажимаем правую кнопку мыши – «Вставить» — «Столбец». Комбинация: CTRL+SHIFT+»=»

Чтобы вставить строку, выделяем соседнюю снизу. Комбинация клавиш: SHIFT+ПРОБЕЛ чтобы выделить строку и нажимаем правую кнопку мыши – «Вставить» — «Строку» (CTRL+SHIFT+»=»)(строка всегда вставляется сверху).

Область действия переменных и констант

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

Option Explicit

Dim sVAT_Rate As Single

Function Total_Cost() As Double


...


End Function
Если переменная sVAT_Rate объявлена в самом начале модуля, то областью действия этой переменной будет весь модуль (т.е. переменная sVAT_Rate будет распознаваться всеми процедурами в этом модуле).

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

Однако, если будет вызвана какая-то функция, расположенная в другом модуле, то для неё переменная sVAT_Rate будет не известна.

Option Explicit

Function Total_Cost() As Double

Dim sVAT_Rate As Single


...


End Function
Если переменная sVAT_Rate объявлена в начале функции Total_Cost, то её область действия будет ограничена только этой функцией (т.е. в пределах функции Total_Cost, можно будет использовать переменную sVAT_Rate, а за её пределами – нет).

При попытке использовать sVAT_Rate в другой процедуре, компилятор VBA сообщит об ошибке, так как эта переменная не была объявлена за пределами функции Total_Cost (при условии, что использован оператор Option Explicit).

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

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

Для объявления констант также можно использовать ключевые слова Public и Private, но не вместо ключевого слова Const, а вместе с ним.

В следующих примерах показано использование ключевых слов Public и Private в применении к переменным и к константам.

Option Explicit

Public sVAT_Rate As Single

Public Const iMax_Count = 5000

...

В этом примере ключевое слово Public использовано для объявления переменной sVAT_Rate и константы iMax_Count. Областью действия объявленных таким образом элементов будет весь текущий проект.

Это значит, что sVAT_Rate и iMax_Count будут доступны в любом модуле проекта.

Option Explicit

Private sVAT_Rate As Single

Private Const iMax_Count = 5000

...

В этом примере для объявления переменной sVAT_Rate и константы iMax_Count использовано ключевое слово Private. Областью действия этих элементов является текущий модуль.

Это значит, что sVAT_Rate и iMax_Count будут доступны во всех процедурах текущего модуля, но не будут доступны для процедур, находящихся в других модулях.

Способы печати

Распечатка документов Word, как правило, задача несложная. Но с таблицами в Excel всё иначе. Самая большая проблема заключается в том, что «на глаз» сложно определить границы печати. И очень часто в принтере появляются практически пустые листы, на которых находится всего 1-2 строки таблицы.

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

  1. Открываем документ. Он выглядит вполне обычно.
  1. Далее нажмите на горячие клавиши Ctrl+P. В появившемся окне мы видим, что информация не помещается на один лист. У нас исчезла графа «Общая стоимость». Кроме того, внизу нам подсказывают, что при печати будет использовано 2 страницы.
  1. Для отмены нажимаем горячую клавишу Esc. В результате появится вертикальная пунктирная линия, которая показывает границы печати.

Увеличить пространство при печати можно следующим образом.

  1. Первым делом уменьшаем поля. Для этого переходим на вкладку «Разметка страницы». Кликаем на кнопку «Поля» и выбираем самый «Узкий» вариант.
  1. После этого уменьшаем ширину столбцов, пока пунктирная линия не окажется за пределами последней колонки. Как это сделать, было описано выше.
  1. Снова нажимаем на Ctrl+P. Теперь мы видим, что информация помещается на один лист.

11.1. Зачем программировать в Excel

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

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

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

Знакомство с редактором VBA

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

  1. Нажмите кнопку «Module» во вкладке «Insert» главного меню. То же подменю откроется при нажатии на вторую кнопку после значка Excel на панели инструментов.

После нажатия кнопки «Module» вы увидите ссылку на него, появившуюся в проводнике слева.

Комментарии в VBA

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

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

Ниже продемонстрировано, как при помощи комментариев поясняется работа простой процедуры Sub:

' процедура 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

         ' найдено совпадение с переданной строкой
         ' сохраняем номер текущей строки и выходим из цикла
         iRowNumber = i
         Exit For

      End If
   Next i

   ' сообщение во всплывающем окне сообщает пользователю,
   ' найдена ли строка, и если найдена – сообщает номер строки 

   If iRowNumber = 0 Then
      MsgBox "Строка " & sFindText & " не найдена"
   Else
      MsgBox "Строка " & sFindText & " найдена в ячейке A" & iRowNumber
   End If

End Sub

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

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

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

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

Adblock
detector