Встроенная система программирования



           Электронная таблица Excel содержит встроенную систему программирования на VBA. Для того, чтобы активизировать VBA можно воспользоваться одним из следующих путей. Во-первых, самый простой путь – находясь в редакторе Microsoft Excel нажать комбинацию клавиш «Alt» - «F11». Во-вторых, можно воспользоваться меню «Сервис» - «Макрос» - «Редактор Visual Basic». И в-третьих, щелкнув правой кнопкой мыши на ярлыке любого рабочего листа из всплывающего меню можно выбрать пункт «Исходный текст». В любом случае открывается окно, которое имеет вид, показанный ниже.

           Это окно, в свою очередь, состоит из нескольких окон.

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

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

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

           Окно редактора исходного текста программы занимает большую часть в правой части экрана. Это окно тесно связано с окном проекта. При выборе какого – либо объекта в окне проекта, в окне редактора исходного текста автоматически будет появляться программный код, связанный с этим объектом (так называемый модуль объекта). Написание программ в окне редактора существенно упрощается за счет его интеллектуальных возможностей. Так, например, редактор сам контролирует синтаксическую правильность вводимых операторов и выдает сообщения об ошибках, дописывает за программиста те участки программного кода, которые однозначно должны фигурировать в данном контексте и так далее. Кроме того, редактор автоматически распознает и выделяет разными цветами синтаксические конструкции VBA. Редактор кода обладает еще одной очень полезной особенностью. Если текстовый курсор расположить на каком – либо служебном слове VBA, имени процедуры, свойства или метода и нажать клавишу «F1», то на экране появится окно со справочной информацией об этом объекте, слове или методе. Обычно в справке приводится и пример правильного использования данного программного кода. Один только недостаток – справка по VBA не переведена на русский язык. Но при даже незначительных знаниях английского – всегда можно оперативно получить помощь.

 

Основные синтаксические конструкции VBA

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

 

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

- первым символом имени обязательно должна быть буква;

- имя может содержать только буквы, цифры и знак подчеркивания («_»);

- длина имени не должна превышать 255 символов;

- в одной и той же подпрограмме (процедуре или функции) не могут быть объявлены две переменные с одним и тем же именем.

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

Тип переменной Способ описания Размер (байт) Диапазон значений
Байт Byte 1 Целые числа от 0 до 255
Логический тип Boolean 2 Только значения True (истина) или False (ложь)
Целое число Integer 2 От -32768 до +32767
Длинное целое Long 4 От -2 147 483 648 до +2 147 483 647
Число с плавающей запятой одинарной точности Single 4 От  до
Число с плавающей запятой двойной точности Double 8 От  до
Дата и время Date 8 От 1 января 100г. до 1 января 9999г.
Любой объект Object 4 Хранит указатель на любой объект, в том числе и на объекты Microsoft Excel
Строка символов String Дл. стр. От 0 до 65000 символов в строке
Произвольный тип данных Variant   Может хранить любое значение из описанных выше

 

Переменные могут быть объединены в так называемые массивы.

Массив - это группа однотипных переменных, которые названы  одним общим именем. Массивы можно считать одной из разновидностей обычных (простых) переменных. Отличие состоит в том, что в массивах можно хранить не одно, а несколько значений. Доступ к заданному элементу массива осуществляется с помощью номера этого значения в массиве – так называемого индекса. Синтаксис объявления массива отличается от синтаксиса объявления переменной тем, что здесь требуется указать также размерность массива и границы изменения индексов.

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

В VBA существуют константы двух типов:

- Встроенные константы. Список этих констант можно просмотреть в окне просмотра объектов. Их количество определяется используемым приложением. Например, в Microsoft Excel к таким константам относятся True, False, Null и еще множество других, описывающих свойства объектов. Например, xlMaximized, xlMinimized и другие выражения, упомянутые в п. 1.2.1, являются именно константами Excel. Об этом, к стати, говорит и префикс «xl» перед каждой такой константой.

- Пользовательские константыобъявляются с помощью служебного слова Const. В момент объявления пользовательскимконстантам присваиваются удобные для восприятия имена и значения. Например, часто используемое в программе число p можно один раз описать в виде константы

 

Const Pi = 3.141592

 

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

          

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

           Арифметические операторы предназначены для выполнения основных арифметических операций над операндами, в качестве которых могут выступать как переменные, так и числа и константы. Знаками этих операторов являются общепринятые математические знаки „+”, „-”, „*”, „/”. Напрмер, оператор “+” выполняет операцию сложения двух чисел или выражений, являющихся операндами. Большинство арифметических операторов VBA требуют наличия двух операндов.

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

[Let] <имя_переменной> = <выражение>

Элементы синтаксиса инструкции Let содержат элементы, представленные в таблице:

 

Элемент Описание
Let   <Имя_переменной>     <Выражение> Необязательный элемент. Ключевое слово Let обычно опускают Обязательный элемент, представляет собой имя переменной ил свойства, удовлетворяющее правилам именования переменных Обязательный элемент, определяющий значение, присваиваемое переменной или свойству

 

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

           Оператор цикла For ... Nextповторяет выполнение группы инструкций указанное число раз. Синтаксис оператора:

       For <Счетчик> = <Начало> То <Конец> [Step <Шаг>]

              [Операторы]

              [Exit For]

              [Операторы]

       Next [<Счетчик>]

Синтаксис этого оператора содержит элементы, представленные в таблице:

 

Элемент Описание
<Счетчик>     <Начало>   <Конец>   <Шаг>     Операторы Обязательный элемент. Числовая переменная (за исключением типа Doolean), используемая в качестве счетчика цикла. Эта переменная не может быть элементом массива. Обязательный элемент – начальное значение переменной <Счетчик> Обязательный элемент – конечное значение переменной <Счетчик> Необязательный элемент – представляет собой значение, на которое изменяется счетчик при каждом выполнении тела цикла. По умолчанию шаг равен единице. Необязательный элемент – один или несколько операторов, составляющих тело цикла.

 

           Шаг изменения может быть как положительным, так и отрицательным.

 

           Оператор While...Wend позволяет организовать выполнение некоторой последовательности операторов до тех пор, пока заданное условие имеет значение True (истина). Синтаксис оператора While...Wend:

       While <Условие>

              [Операторы]

       Wend

Оператор While...Wend содержит элементы, представленные в таблице:

 

Элемент Описание
<Условие>   Оператор Числовое, логическое или строковое выражение, которое имеет значение True или False. Необязательный элемент – один или несколько операторов, составляющих тело цикла.

               

           При входе в цикл вычисляется и анализируется заданное условие. Если условие имеет значение True, то выполняется весь набор операторов, расположенных до служебного слова Wend – конца цикла. После этого управление возвращается оператору While и опять проверяется условие. Если оно имеет значение True, то снова выполняются все операторы до Wend. В противном случае выполнение программы продолжается с оператора, следующего за служебным словом Wend. Циклы While...Wend могут иметь любую глубину вложенности.

       Оператор If...Then...Elseзадает условие выполнения определенных групп операторов в зависимости от значения выражения. Его синтаксис следующий:

       If <Условие> Then

                   <Операторы>

       [Else

                   <Операторы>]

       End If

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

If <Условие1> Then

<Операторы>

[ElseIf <Условие2> Then

       <Операторы>]

       . . .

[ElseIf <УсловиеN> Then

       <Операторы>]

[Else

       <Операторы>]

End If

           При этом конструкция ElseIf ... Then может повторятся несколько раз. Синтаксис инструкции If...Then...Else содержит элементы, представленные в таблице:

 

Элемент Описание
<Условие>   Операторы Обязательный элемент, представляющий логическое выражение, имеющее значение True или False. Если условие имеет значение Null, то оно считается равным False. Представляет собой один или несколько операторов, которые выполняются, если <Условие> имеет значение True.

           

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

           - процедуры, задаваемые служебным словом Sub (сокращение от Subprogram – подпрограмма);

           - функции, задаваемые служебным словом Function.

           Процедура-подпрограмма имеет следующий синтаксис:

           

       [Private I Public] [Static] Sub <Имя> ([<Список параметров>])

       <Тело процедуры>

       End Sub

 

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

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

           Элемент <Имя> задает название процедуры, по которому она будет вызываться в программе. Имя должно удовлетворять правилам задания имен переменных в VBA.

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

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

           Функция отличается от подпрограммы тем, что она возвращает вычисленное значение. Ниже представлен синтаксис процедуры-функции:

[PrivateIPublic] [Static] Function <Имя> (<СписокПараметров>) [As <Тип>]

<Тело функции>

<Имя> = <Выражение>

End Function

           Имеются различия в синтаксисе описания подпрограммы и функции:

           - Вместо ключевого слова Sub для объявления функции используется ключевое слово Function.

           - После списка аргументов можно указать служебное слово As (по-русски – как):  As <тип>, определяющий тип возвращаемого функцией значения.

           В теле функции последним выполняемым оператором, как правило, бывает оператор присваивания: <Имя> = <Выражение>

.

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

 

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

           Сейчас мы приступим к освоению программирования на практике.

Примеры составления программ

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

Пример 1

 Расчитать резонансную частоту параллельного колебательного контура, изображенного на рис. 1.

 

 


       

 

                          Рис. 1. Схема для исследования

 

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

Условие резонанса в этом контуре, т.е. связь между параметрами R1, R2, L и C задается следующим выражением:

                                               (1)

Из этого выражения, путем несложных алгебраических преобразований получаем формулу для вычисления резонансной частоты:

                                                             (2)

Составим программу для вычисления по этой формуле с помощью языка VBA и среды Microsoft Excel.

Прежде чем приступать к разработке самой программы, нужно четко решить, какие начальные данные нужны нам для работы. В нашем примере мы должны знать значения сопротивлений резисторов R1 и R2, индуктивности катушки – L и емкости конденсатора – C. Но эта емкость не является постоянной. Она, как раз, есть переменная, от которой зависит искомая частота резонанса. Это означает, что мы должны задать для этой емкости три значенияначальное, от которого она начинает изменяться, конечное – до которого она должна изменяться, и значение шага изменения. Обозначим эти значения как Cbeg, Cend и dC соответственно. Таким образом, для работы программы мы должны ввести шесть значений:

- сопротивление резистора R1

- сопротивление резистора R2

- индуктивность катушки L

- начальное значение емкости конденсатора Cbeg

- конечное значение емкости конденсатора Cend

- шаг, с которым изменяется емкость – dC.

Теперь, когда мы определились с данными, которые должны вводиться, можем переходить к составлению программы.

Прежде всего, нужно запустить программу Microsoft Excel. Для этого есть несколько путей. Сначала найдите рисунок – пиктограму Excel на рабочем столе вашего компьютера. В зависимости от версии программы он может иметь вид  (для Microsoft Excel 97) или  (для Microsoft Excel 2000). Если вы нашли её, то нужно щелкнуть два раза на этой пиктограмме левой кнопкой мыши. Программа Microsoft Excel начнет работать.

Может случиться так, что вы не найдете таких пиктограмм на рабочем столе. Но это еще не означает, что программа Excel не установлена на Вашем компьютере. Попробуем найти ее с помощью главного (системного) меню Windows. Найдите на экране кнопку . Она может находиться в каком-нибудь углу экрана – чаще всего – в левом нижнем. Нажмите на нее с помощью левой кнопки мыши. Появится системное меню. Его состав может изменяться в зависимости от состава и настроек системы вашего компьютера. Но независимо от этого вы всегда найдете пункт “Программы” (см. рисунок).

Если подвести к этому пункту курсор мыши и немного подождать (не больше 1 – 2 секунд), то возле основного меню появится дополнительное меню, в котором вы сможете найти одну из упомянутых пиктограмм с надписью “Microsoft Excel”.

 

Для запуска Excel достаточно один раз щелкнуть левой кнопкой мыши на этой надписи.

Если вы ничего не нашли и в системном меню, то скорее всего программы Microsoft Excel действительно нет на вашем компьюторе.

После запуска Мicrosoft Excel  на экране появится окно, приведенное на рисунке:

 

 

Это главное окно программы. Оно содержит стандартную строку заголовка – „Microsoft Excel – Книга1”. Под строкой заголовка находится строка меню, в которой содержатся все команды программы.

 

Строка меню.

 

Панель «стандартная».

 

Панель форматирования.

 

Строка формул.

 

 Это меню предназначено для управления программой. Ниже главного меню рассположена так называемая “панель инструментов” – кнопки с разными пиктограммами. Кнопки становятся объемными, когда на них устанавливают курсор мыши. Эти кнопки дублируют некоторые функции главного меню, которые чаще всего используются. Рассположенное ниже светлое поле – это лист так называемой „рабочей книги” Excel, которая состоит из большого количества ячеек, разделенных серыми линиями. Каждая такая ячейка может служить как для ввода, так и для вывода каких-либо значений. Мы будем использовать ячейки для того, чтобы ввести значения параметров нашей схемы и получить таблицу зависимости резонансной частоты от емкости конденсатора.

Начинаем работать.

Сначала разместим на листе заголовок, поясняющий, что именно мы собираемся расчитывать. Для нашей программы подойдет такой – “Расчет частоты резонанса”.

Щелкнем левой кнопкой мыши по ячейке, которая находится на пересечении строки 1 и столбца А нашего рабочего листа. Вокруг неё появилась черная рамка – это означает, что ячейка стала активной. Теперь начинаем вводить с клавиатуры текст „Расчет частоты резонанса”. На экране он появляется в этой ячейке. Когда уже весь текст введен – нажимаем клавишу Enter. Экран теперь имеет такой вид.

 

           Теперь нам нужно решить, какие ячейки мы будем использовать для ввода параметров расчета. Нам нужно шесть ячеек – именно столько чисел мы должны ввести. Чтобы пользователям нашей программы было ясно что и куда вводить, сделаем маленькую табличку. Для этого в первых шести ячейках второй строки разместим заголовки ячеек – “R1”, “R2”, “L”, “С нач.”, “С кон.” и “Шаг”. Это будет заголовок таблицы. Шесть ячеек строкой ниже отведем  для значений параметров. Пока оставим их пустыми.

Чтобы наша таблица приобрела красивый внешний вид, нужно сделать еще вот что. Во-первых, разместим заголовки посредине ячеек. Сделать это очень легко. Сначала выделим эти ячейки. Для этого нажмем левую кнопку мыши на ячейке “R1”, и не отпуская этой кнопки тянем мышью к ячейке “Шаг”. Все ячейки, кроме первой, стали черными. Кроме этого, вокруг них появилась двойная рамка. Теперь на панели инструментов найдем кнопку . Эта кнопка устанавливает выравнивание текста посредине ячейки. Теперь на панели форматирования найдите кнопку . Эта кнопка помогает быстро установить рамку вокруг всех выделенных ячеек. Нажмем на нее. Обратите внимание, она так и осталась нажатой. Это означает, что рамка установлена. Теперь мы имеем красивый заголовок. Осталось сделать рамку вокруг ячеек, куда мы собираемся заносить данные. Это делается также – сначала ячейки нужно выделить, а потом уже известной нам кнопкой установить рамку.

Чтобы сделать нашу программу совсем красивой, можно еще поработать с заголовком „Расчет частоты резонанса”, который мы имеем в первой ячейке. Сначала уже знакомым способом выделяем эту ячейку и еще пять ячеек справа. Теперь в главном меню выбираем пункт “Формат” – “Ячейки” (можно просто одновременно нажать “Ctrl” и “1” на клавиатуре). Появится окно “Формат ячеек”.

 

Найдите в этом окне закладку Выравнивание. На ней в поле По горизонтали нужно установить По центру выделения, а среди переключателей  Отображение  установить „галочку” у переключателя  Объединение ячеек.

Теперь перейдите на следующую закладку Шрифт (в этом же окне!) и установите в поле Начертание – значение Полужирный курсив, а в поле Размер  – значение  12. Наша таблица теперь виглядит так:

 

Правда, красивее?

Теперь давайте размышлять. Предположим, что мы ввели в ячейки нашей таблицы то что нужно. Можно начинать расчет. Но как наша программа узнает об этом? Нужно её как-то „подтолкнуть”. Для этого лучше всего подойдет кнопка, нажав на которую мы запустим расчет. Чтобы разместить кнопку на рабочем листе нужно сделать вот что. В главном меню виберите пункт Сервис – Настройка. Откроется такое окно:

В этом окне есть закладка Панели инструментов. Она первая в списке закладок. На этой закладке, в поле, которое тоже называется Панели инструментов  нужно найти строку Элементы управления (в самом низу списка) и поставить возле неё „галочку”. Сразу появляется маленькое окошечко Элементы управления такого вида:

Теперь окно Настройка можно закрыть. Наше окошечко остается на экране. Это панель Элементы управления. Разберемся с ней. Её предназначение – установить нам нужные органы управления. Этих органов там много – их пиктограммы можно увидеть в нижнем ряду окна. Нам нужен только один – кнопка. Её пиктограму можно найти в нижнем ряду - третья слева( ). Нажмем на неё. Курсор мыши приобрел вид маленького крестика. Теперь нужно вставить кнопку куда-то в удобное место на экране. У нас это место – возле правого нижнего угла таблицы. Подводим курсор мыши куда-нибудь в свободное место и нажимаем левую кнопку. Теперь не отпуская кнопку тянем мышь, рисуя черный прямоугольник. Этот прямоугольник – контуры будущей кнопки. Теперь отпускаем левую кнопку. На нашем рабочем листе появилась кнопка.

 

 

Вокруг неё можно увидеть белые квадратики. Если мышью потянуть за какой-либо квадратик, то размеры кнопки можно изменить. Обратите внимание, если курсор мыши расположен где-то в сером поле кнопки, то он принимает вид крестика. Если в этом случае нажать на левую кнопку мыши и потянуть её, то кнопка будет изменять своё положение. Так мы можем расположить её в удобном месте, например, так, как показано на рисунке.

 

 

Теперь хорошо было бы написать на этой кнопке вместо “CommandButton1” что-то понятное, например, слово ”Рассчитать”. Сделать это очень просто. Прежде всего найдите на нашей панели Элементы управления кнопку . Нажмите ее. На экране появилось окно с надписью “Properties” на английском языке. На русском языке это слово означает  “Свойства”

 Среди многих строк в этом окне нас интерисует только одна – строка с надписью “Caption” – “Заголовок”.

Как значение этого свойства сейчас стоит именно “CommandButton”. Дважды щелкнем мышью по этой надписи. Она стала доступной для редактирования. Теперь нужно стереть английскую надпись, а вместо нее написать ”Рассчитать” на русском языке. Обратите внимание, как только мы пишем в поле “Caption” какую-либо букву, она сразу же появляется на нашей кнопке. Теперь нажмите клавишу Enter. Вот наша кнопка имеет заголовок. Кнопка сделана.

А теперь очень важно! Посмотрите, кнопку невозможно нажать! Когда мы щелкаем по ней мышью, появляются белые квадратики, а кнопка не нажимается. Это произошло потому, что мы до сих пор находимся в режиме конструирования кнопки. Нужно выйти из этого режима. Найдите на панели органов управления кнопку с изображением . Видите, она утоплена. Нажмите на неё. Кнопка поднялась. Мы вышли из режима конструктора. Теперь, когда мы нажимаем нашу кнопку „Рассчитать”, она ведет себя также, как и все кнопки Windows – нажимается. Правда, при этом ничего не происходит. Но это временно. Чуть позже мы свяжем с этой кнопкой разработанную нами программу. Сейчас, однако, еще немного поработаем с нашим рабочим листом.

 Окна “Properties” и “Элементы управления” можно закрыть. Они нам больше не нужны.

Сейчас нужно подготовить место, куда будут попадать результаты расчетов. Мы знаем, что это должна быть таблица со столбцами ”Емкость” и ”Частота”. Сделаем заголовок такой таблицы. Мы уже знаем, как это сделать. Теперь наш рабочий лист имеет такой вид :

 

           Теперь все готово для того, чтобы писать программу. Но сначала немного теории.

Файл с таблицей Microsoft Excel (так называемая “рабочая книга”) может состоять из нескольких листов – страниц. На экране, вид которого приведен выше, мы видим три закладки “Лист1”, “Лист2” и “Лист3” снизу. Только одна из них белая – именно этот лист ”активный” – его мы видим на экране. Но на самом деле лист – это не только то, что мы видим сейчас. С каждым таким листом в Microsoft Excel связан ещё один объект – так называемый “модуль”. Модуль – это место, где программист может писать программу, которая будет руководить рабочим листом. Когда мы создаем лист – создается пустой модуль. То есть прграммы ещё нет, видом рабочего листа управляет пользователь Microsoft Excel. Именно это мы и делали, когда создавали таблицы, заголовок и кнопку. Много людей каждый день делают эту работу, не подозревая, что они не видят и не используют 90 процентов того, что может предоставить им Excel. Теперь мы с вами начнем осваивать эти гиганские возможности.

Прежде всего нужно увидеть модуль, связанный с нашим листом. Для этого, как указано в главе 1, нужно один раз щелкнуть правой кнопкой мыши на ярлычке с надписью “Лист1”. Открывается меню, в котором требуется выбрать самую нижнюю строку – Исходный текст.

 

А теперь экран Microsoft Excel изменяется неузнаваемо. Мы переходим к режиму програмирования на языке VBA, описанному ранее.

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

           Вспомним, что программа должна начать исполняться только после нажатия на сделанную нами кнопку ”Рассчитать”. То есть, программа должна быть связана с событием – нажатием на кнопку. Создадим такую связь.

Прежде всего мы должны сказать системе Excel, что начинаем работу именно с кнопкой ”Рассчитать”. Помните, когда только мы её создали, на ней была надпись CommandButton1? Это имя этой кнопки, которое ей автоматически установила сама система. Заголовок кнопки был такой же, как и её имя. Заголовок мы изменили, но имя осталось. Если есть желание, можно изменить и его, но сейчас мы не будем этого делать. Сейчас мы должны создать процедуру VBA, которая будет вызываться и исполняться при нажатии на кнопку. Эта процедура на самом деле является обработчиком события „Нажатие” для объекта типа „Кнопка”. Начинаем.

           Найдите в верхней части окна Microsoft Visual Basic поле с надписью “(General)” и нажмите кнопочку с черным треугольником в правой части этого поля. Появится выпадающий список объектов, имеющихся в настоящий момент в Microsoft Excel.

 

 

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

Private Sub CommandButton1_Click()

End Sub

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

Давайте подумаем, что именно должна делать наша программа.

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

Название данных

Адрес ячейки

  Строка Столбец
R1 3 1
R2 3 2
L 3 3
Cbeg 3 4
Cend 3 5
DC 3 6

 

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

R1 = Cells(3, 1).Value

Объект Cells(3, 1)открывает нам доступ к ячейке на пересечении строки номер 3 и столбца номер 1. В этой ячейке мы условились писать значение сопротивления первого резистора. Слово Value («Значение» - по-русски), которое стоит после точки, говорит о том, что мы интересуемся тем числом, которое записано в эту ячейку. После выполнения этого оператора переменная R1 в нашей программе приобрела значение сопротивления первого резистора.

Размещаем операторы ввода всех переменных в нашей процедуре:

Private Sub CommandButton1_Click()

Dim R1, R2, L As Single

Dim Cbeg, Cend, dC As Single

Dim C, W As Single

 

R1 = Cells(3, 1).Value

R2 = Cells(3, 2).Value

L = Cells(3, 3).Value

Cbeg = Cells(3, 4).Value

Cend = Cells(3, 5).Value

dC = Cells(3, 6).Value

End Sub

Первые три строчки этой программы описывают все переменные, которые мы будем использовать в нашей программе. Среди них есть переменные, о которых мы ещё не говорили – это C и W. Первым мы будем обозначать поточное значение емкости конденсатора, а вторым – расчетное значение циклической частоты. Все эти переменные объявлены как переменные с плавающей запятой.

 Теперь мы можем организовать цикл, в котором значение емкости конденсатора будет изменяться от Cbeg до Cend с шагом dC. В этом цикле поместим выражение для расчета циклической частоты по формуле (2). После вычисления текущего значения С и циклической частоты w, мы должны поместить эти значения в таблицу. Они должны выводиться начиная со строки 6, С – в столбце 1, а w – в столбце 2.

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

Небольшая сложность состоит в том, что мы, когда составляем программу, еще не знаем, сколько строк будет в нашей выходной таблице. Мы знаем только, что первый вывод будет в строку 6, второй – 7, третий – 8 и так далее. Поэтому в нашу программу нужно ввести ещё одну переменную – NumRow – текущий номер строки. Перед началом цикла ей присваивается значение 6 – номер строки для первого вывода. После вывода очередной строки, эта переменная увеличивается на 1, обеспечивая, таким образом, вывод следующей строки для каждого повтора цикла.

Наша программа имеет такой вид.

 

Private Sub CommandButton1_Click()

Dim R1, R2, L As Single

Dim Cbeg, Cend, dC As Single

Dim C, W As Single

 

R1 = Cells(3, 1).Value

R2 = Cells(3, 2).Value

L = Cells(3, 3).Value

Cbeg = Cells(3, 4).Value

Cend = Cells(3, 5).Value

dC = Cells(3, 6).Value

 

' Вычисления

NumRow = 6

For C = Cbeg To Cend Step dC

W = 1 / Sqr(L * C) * Sqr((L / C - R1 ^ 2)

 / (L / C - R2 ^ 2))

   Cells(NumRow, 1).Value = C

   Cells(NumRow, 2).Value = W

   NumRow = NumRow + 1

Next C

End Sub

Чтобы выполнить эту программу мы должны вернуться к хорошо знакомой нам таблице Excel (нажать на кнопку  в верхней части окна “Project – VBAProject”). Теперь можно занести необходимые значения параметров элементов и смело нажать на кнопку ”Рассчитать”. Если вы не допустили ни каких ошибок – вы сразу получите несколько значений резонансной частоты для соотвтетстсвующих значений емкости конденсатора.

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

 


Дата добавления: 2018-02-18; просмотров: 605; Мы поможем в написании вашей работы!

Поделиться с друзьями:






Мы поможем в написании ваших работ!