Excel vba курсовая работа

Министерство Образования и Науки Российской Федерации

Федеральное Агентство по Образованию

Елецкий Государственный Университет им. И.А. Бунина

Физико-математический факультет

Кафедра вычислительной математики и информатики

Курсовая работа

на тему:

«Использование языка Visual Basic for Application в офисных приложениях».

                                                           Выполнил: Зверева Д.А.

                                                      Научный руководитель:

Кандидат физико-математических наук

                                                        Доцент — ________________

 2010г.

Оглавление.

1.   Введение……………………………………………………………………………..…..4

2.  Из истории создания Visual Basic for Application……………………………..……….4

3. Основные понятия языка VBA Excel……………………………………………………7

  1. Общее понятие о языке VBA;
  2. Объекты VBA;
  3. Свойства, методы и события;
  4. Элементы языка VBA;
  5. Структура редактора VBA.
  6. Панели инструментов

4. Создание макросов и их применение в Excel……………………………………….…16

  1. Понятие макроса.
  2. Запись простых макросов.
  3. Выполнение макросов.
  4. Редактирование макросов.
  5. Назначение макроса графическим изображениям.
  6. Удаление макросов из списка макросов.
  7. Ограниченность макросов.

5. Пользовательские формы……………………………………………………………….22

  1. Создание экранных форм.
  2. Панель элементов управления.
  3. Свойства, методы и события объекта UserForm.
  4. Пользовательская форма UserForm

6. Рисунки в пользовательских формах……………………………………………..……28

  1. Свойства объекта Image.
  2. Отладка программ.

7.  Стандартные диалоговые окна…………………………………………………………31

  1. Окно сообщений MsgBox
  2. Окно ввода InputBox
  3. Объединение текстовых строк.

8. VBA в приложении  Word ………………………………………………………….…..33

  1. Объекты.
  2. Макросы.

9. VBA в приложении Power Point………………………………………………………..39

  1. Применение пользовательских форм.

10. Вывод……………………………………………………………………………………46

11. Список литературы…………………………………………………………………….48

1. Введение.

В современном обществе компьютер играет огромную роль, уже трудно представить труд ученых, инженеров, экономистов, бухгалтеров без использования вычислительной техники. Но компьютер сам по себе не способен даже на простые операции, поэтому для того чтобы человек мог использовать компьютер необходимо так называемое программное обеспечение. Программа руководит ресурсами компьютера и предоставляет их в распоряжение пользователя. Существует огромное количество разнообразных по своим функциям и возможностям программ, но среди них выделяют два основных типа: системное и прикладное программное обеспечение. К системному программному обеспечению относят операционную систему и все программы, предназначенные для создания рабочей среды для прикладных программ, которые в свою очередь выполняют ту самую, необходимую пользователю, работу. В этой курсовой работе  я остановлюсь на обзоре  операционной системы  Windows, в частности офисного пакета Microsoft Office и  использовании языка Visual Basic for Application в нем.

2.  Из истории создания Visual Basic for Application.

Язык Basic был разработан профессорами Дартмутского колледжа Дж.Кемени и Т.Курцом в 1965 году как средство обучения и работы непрофессиональных программистов. Его назначение определено в самом названии, которое является аббревиатурой слов Beginner’s All- purpose Symbolic Instruction Code (многоцелевой язык символических инструкций для начинающих) и при этом в дословном переводе означает «базовый». Однако парадокс заключается в том, что, будучи действительно весьма простым средством программирования, совершенно непригодным в те времена для решения серьезных задач, Basic представлял собой качественно новую технологию создания программ в режиме интерактивного диалога между разработчиком и компьютером. То есть представлял собой прообраз современных систем программирования. Другое дело, что решение подобной задачи на технике тех лет было возможно только за счет максимального упрощения языка программирования и использования транслятора типа «интерпретатор».

В силу этих же причин Basic в основном применялся на мини- и микроЭВМ, которые в 70-е годы имели оперативную память, объем которой кажется сегодня просто нереальным (4-32 тысяч байт). Резкое развитие систем на основе Basic началось с появлением в начале 80-х годов персональных компьютеров, производительность и популярность которых растет вот уже двадцать лет невиданными темпами.

В начале 90-х годов Microsoft начала активную борьбу за продвижение в массы своей новой операционной системы Windows (против своей же, но более уже устаревающей MS-DOS). Но, как известно, пользователи работают не с ОС, а с программами, которые работают в ее среде. Поэтому скорость смены платформы в основном определяется темпами появления соответствующих прикладных программ.

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

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

Действительно, VB 1.0 в тот момент был больше похож не на рабочий инструмент, а на действующий макет будущей среды разработки. Его принципиальное новшество заключалось в реализации идей событийно-управляемого и визуального программирования в среде Windows, которые весьма радикально отличались от классических схем разработки программ. По общему признанию VB стал родоначальником нового поколения инструментов, называемых сегодня средствами быстрой разработки программ (Rapid Application Development, RAD). Сегодня эта идеология считает привычной, но тогда она казалась совершенно необычной и создавала серьезные проблемы (в том числе чисто психологического плана) для программистов «старых времен».

Тем не менее, число VB-пользователей росло, причем во многом за счет огромной популярности ее предшественника — QuickBasic. При этом VB быстро «мужал», усиливаясь за счет, как развития среды программирования, так и включения профессиональных элементов языка и проблемно-ориентированных средств. И к моменту выпуска в 1995 году VB 4.0 эта система была уже признанным и одним из самых распространенных инструментов создания широкого класса приложений. В настоящее время используется версия VB 6.0 и  7.0.

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

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

Первый вариант VBA 1.0 появился в составе MS Office 4.0, но лишь в программах Excel 4.0 и Project 6.0. В других же приложениях — Word 6.0 и Access 2.0 — были собственные варианты Basic. Более того, VBA 1.0 довольно сильно отличался (причем имея ряд существенных преимуществ) от используемой тогда универсальной системы VB 3.0.

Качественный перелом наступил в конце 1996 года с выпуском MS Office 97, в котором была реализована единая среда программирования VBA 5.0, включенная в программы Word, Excel и PowerPoint. Более того, VBA 5.0 использовала тот же самый языковый механизм и среду разработки, что и универсальная система VB 5.0. В состав выпущенного MS Office 2000 вошла соответственно версия VBA 6.0, которая используется в шести программах — Word, Excel, PowerPoint, Access, Outlook, Frontpage.

3. Основные понятия языка VBA Excel

VBA относится к языкам объектно-ориентированного программирования, поэтому разговор о нем естественно начать с понятия объекта.

Объекты

Объект — основной элемент VBA Excel. В VBA объектами являются рабочая книга, рабочий лист и его составляющие.

Примеры объектов:

Sheet — лист Excel;

Cell — ячейка;

Range — диапазон ячеек;

Application — приложение;

UserForm — пользовательская форма.

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

Методы

Над объектами можно совершать различные действия. Действия, совершаемые над объектами, называются методами. Например, ячейку можно очистить (Clear), приложение закрыть (Quit), пользовательскую форму показать (Show) или скрыть (Hide).

Название метода отделяется от названия объекта точкой: объект.метод.

Примеры использования методов:

Range(«B2:E2»).Select — выбрать диапазон ячеек B2:E2;

Range(«C1:C5»).Clear — очистить диапазон ячеек C1:C5;

UserForm2.Hide — скрыть форму № 2;

UserForm5.Show — показать форму № 5;

Application.Quit — выйти из приложения.

Свойства

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

Синтаксис установки значения свойства:

Объект.Свойство = ЗначениеСвойства,

— где Объект обозначает имя объекта, Свойство — имя свойства, которому присваивается значение.

Имя объекта отделяется от имени свойства точкой.

Примеры свойств:

Range(«D1»).Value = 2005 — поместить в ячейку D1 значение 2005.

Range(«C1:C10»).Text = «Информатика» — поместить в диапазон ячеек C1:C10 текст Информатика.

Range(«B2»).Font.Size = 14 — в ячейке B2 установить размер шрифта 14.

Методы и свойства некоторых объектов VBA

Объект: Application (приложение).

Метод Свойство: Caption (имя главного окна).

Примеры. Application.Quit — закрыть приложение; Application.Caption = «Протокол» — установить в качестве заголовка окна приложения “Протокол”.

Объект: Sheet (лист), ActiveSheet (активный/выбранный лист).

Семейство: Sheets (листы).

Методы: Select (выбрать); ShowDataForm (показать встроенную форму).

Примеры: Sheets(«Меню»).Select — выбрать лист “Меню”; ActiveSheet.ShowDataForm — на активном в настоящий момент листе показать встроенную форму.

Объект: Range (диапазон).

Методы: Select (выделить); Clear (очистить).

Свойство: Name (имя).

Примеры. Sheets(«Протокол»).Range(«В4:В10»).Name = «Класс» — диапазону В4:В10, расположенному на листе “Протокол”, присвоить имя “Класс”; Sheets(«Протокол»).Range(«В4:В10»).Select — выделить диапазон В4:В10 на листе “Протокол”.

Объект, Семейство: UserForm (пользовательская форма).

Методы: Show (показать); Hide (скрыть).

Свойство: Caption (текст, отображаемый в строке заголовка).

Примеры. UserForm1.Show — показать пользовательскую форму номер один;

UserForm1.Hide — скрыть пользовательскую форму номер один;

UserForm1.Caption — «Информатика»- вывести заданный в кавычках текст в строке заголовка.

Объект, Семейство: TextBox (Поле ввода).

Свойство: Text (содержимое).

Примеры. UserForm1.TextBox1.Text = Date — в поле ввода номер один в пользовательской форме номер один записать текущую дату; UserForm1.TextBox2.Text = » » — очистить поле ввода номер два в пользовательской форме номер один.

Объект, Семейство: ComboBox (поле со списком).

: Quit (закрыть).

Метод: AddItem (добавить элемент в список).

Свойства: Text (содержимое); Rowsource (источник строк для списка).

Примеры. UserForm1.ComboBox2.Text = » » — очистить значение поля для поля ввода со списком номер два в пользовательской форме номер один; UserForm2.ComboBox1.Rowsource=»В2:В10″ — источником строк для поля один со списком в пользовательской форме два установить данные из диапазона В2:В10;

UserForm1.ComboBox1.AddItem («Факс») — добавить к списку элемент, заключенный в кавычки.

Объект, Семейство: OptionButton.

Свойства: Value (значение); Сaption (надпись).

Примеры. UserForm3.OptionButton1.Value = True — выбрать переключатель номер один в пользовательской форме номер три; UserForm3.OptionButton1.Capture = «Успеваемость» — установить надпись “Успеваемость” рядом с переключателем в пользовательской форме номер три.

Объект, Семейство: CheckBox.

Свойства: Value (значение); Сaption (надпись).

Примеры. UserForm2.CheckBox1.Value = True — установить флажок номер один в пользовательской форме номер два; UserForm3.CheckBox1.Value = False — сбросить флажок номер один в пользовательской форме номер три; UserForm4.CheckBox1.Capture=»Класс» — установить надпись “Класс” рядом с флажком в пользовательской форме номер четыре.

События

Событие представляет собой действие, распознаваемое объектом (например, щелчок мышью или нажатие клавиши, перемещение мыши или выход из программы), для которого можно запрограммировать отклик, т.е. реакцию объекта на произошедшее событие. В языке VBA для каждого объекта определен набор стандартных событий. Стандартное событие для объекта “кнопка” (CommandButton) — щелчок мышью (Click). Если пользователь нажимает на кнопку, то это событие. На это событие должен быть отклик, т.е. выполнение какой-либо программы. Такая программа называется процедурой обработки событий и имеет стандартное имя. Если такой отклик не создан (не написана соответствующая программа), то система никак не будет реагировать на это событие.

Элементы языка VBA

Объекты — основные элементы языка VBA, но не единственные. К другим элементам относятся: константы, переменные, массивы, выражения, встроенные функции, встроенные диалоговые окна, операторы.

Константы — данные, не изменяющиеся в процессе решения задачи. Константы бывают двух видов: числовые и символьные.

Числовые константы — это целые либо вещественные числа.

Символьные константы — текст, заключенный в кавычки. Пример числовой константы — 5,8 (использование запятой или точки зависит от настроек операционной системы). Пример символьной константы — ООО “Темп”.

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

Имя переменной должно начинаться с буквы и может содержать любую комбинацию букв, цифр и символов за исключением точек, пробелов и следующих символов: “!”, “%”, “&”, “$”, “#”, “@”. Длина имени не должна превышать 255 символов. Не следует использовать имена, совпадающие с ключевыми словами VBA и именами встроенных функций и процедур. Основные типы переменных, их размеры и диапазоны принимаемых значений приведены в таблице ниже.

Тип

Размер (байт)

Диапазон значений

Boolean (логический)

2

True или False

Integer (целое число)

2

От 32768 до 32767

Long (длинное, целое число)

4

От 2 147 483 648 до 2 147 483 647

Single (число с плавающей запятой, обычной точности)

4

Для отрицательных значений

от  -3,4Е38 до -1,4Е45, для положительных – от 1,4Е45 до 3,4Е38

Double (число с плавающей запятой двойной точности)

8

Для отрицательных: от -1,79Е308 до -4,94Е-342

Для положительных: от 4,94Е-324 до 1,79Е308

Currency (денежный)

8

От 922 337 203 685 477, 5808 до 922 337 203 685 477,5807

Date (дата и время)

8

От 1 января 100г. до 31 декабря 9999г.

String (строка)

10+ длина строки

От 0 до 2*10^9

Variant (вариант)

Зависит от содержимого переменной

Переменные типа Variant могут хранить все, что в них поместят. Их тип изменяется в зависимости от последнего присвоения. В программах переменные описываются с помощью специального оператора Dim.

Массив — упорядоченная совокупность однотипных переменных. Массивы имеют имя и размерность. Имя массива подбирается с учетом тех же правил, что и имена переменных. Размерность — это количество элементов (переменных), составляющих массив. Из констант, переменных и встроенных функций (они рассмотрены далее) с помощью скобок и знаков арифметических операций (“+”, “-”, “*”, “/”, “^”) можно составлять выражения. Частным случаем выражения может быть просто одиночный элемент, т.е. константа, переменная или обращение к встроенной функции.

Примеры выражений:

Z

(a+b)^2

45

sin(y)

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

— математические функции;

— функции преобразования форматов;

— логические функции;

— функции времени и даты.

— функции проверки типов;

Некоторые из функций приведены в следующей таблице.

Abs(x)

Модуль (абсолютная величина числа)

Exp(x)

Экспонента, т.е. возведение натурального логарифма в указанную степень

Log(x)

Натуральный логарифм

x1 END x2

x1 OR x2

True, если х1 и х2 равны True; False, если либо х1, либо х2 равно False

True, если хотя бы один из х1, х2 равен True; False, если х1 и х2 равны False

IsNumeric (переменная)

True, если переменная – число, False, если переменная – не число

IsNull (переменная)

True, если переменная является пустым значением (Null); False, если переменная непустое число

Функции преобразования форматов

CInt(x)

х — Преобразуется в целое

CSng(x)

х – преобразуется в число с плавающей точкой обычной точности

CStr(x)

х – преобразуется в строку

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

Application.Функция Рабочего Листа(Аргументы).

Примеры:

— Application.Sum(Sheets(«Проверка»).Range(«A1:B20»)) — суммируются значения из ячеек диапазона A1:B20, расположенного на листе “Проверка”;

— Application.CountA(Sheets(«Ученики»).Range(«A:A»)) — подсчитывается количество непустых ячеек в столбце А на листе “Ученики”.

Структура редактора VBA

Редактор VBA активизируется командой Сервис ® Макрос ® Редактор Visual Basic. После выполнения команд мы попадаем в редактор VBA. Возвратиться из редактора VBA в рабочую книгу можно нажатием кнопки Вид (View) ® Microsoft Excel . Рассмотрим основные компоненты окна редактора. Внешний вид окна редактора представлен на рисунке. Окно редактора состоит из следующих компонентов: панели инструментов; окно проекта; окно свойств; окно редактирования кода; меню.

Панели инструментов

Стандартная панель инструментов редактора Visual Basic содержит кнопки, предназначенные для выполнения наиболее часто используемых команд.

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

Кнопки первого сегмента:

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

Кнопки второго сегмента:

Кнопки для вырезания, копирования, вставки и поиска фрагментов кода.

Кнопки третьего сегмента:

Кнопки отмены действий и повторения отмененных действий.

Кнопки четвертого сегмента:

Кнопки для выполнения, остановки и прекращения выполнения процедуры, а также смены режима отображения экранной формы.

Кнопки пятого сегмента:

Кнопки, управляющие отображением окон проектов, свойств и просмотра объектов, а также панели инструментов.

Последняя кнопка — это обычная кнопка вызова справочной системы.

Окно проекта

Окно проекта активизируется выбором команды Вид ® Окно проекта (View, Project window) или нажатием кнопки Окно проекта . В окне проекта представлена иерархическая структура файлов, форм и модулей текущего проекта.

Окно свойств

В окне свойств перечисляются основные значения свойств выбранного объекта. Используя это окно, можно просматривать свойства и изменить их значения. Для просмотра свойств выбранного объекта надо выполнить команду Вид ® Окно свойств (Properties Windows) или нажатием кнопки .

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

Окно для просмотра объектов (Object Browser)

Окно Просмотр объектов (Object Browser) вызывается командой Вид ® Просмотр объектов (View, Object Browser) или нажатием кнопки . В этом окне можно просматривать все объекты проекта. Здесь вы найдете все свойства, методы и события, связанные с любым объектом.

Окно Просмотр объектов состоит из трех основных частей:

1. Раскрывающегося списка Проект/Библиотека в верхнем левом углу экрана. Например, библиотеки объектов Excel, VBA, Office и VBAProject (объекты пользовательского проекта).

2. Списка Классы. Выводятся все классы выбранной библиотеки.

3. Списка Компоненты (Members). Выводятся все компоненты выбранного класса.

Это окно предоставляет доступ ко всем объектам, свойствам, методам и событиям.

4. Создание макросов и их применение в Excel

Понятие макроса

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

MacroRecorder — это стандартное средство записи макросов в Excel, посредством которого можно записывать последовательность действий пользователя и получать соответствующий код (программу) на VBA. Программа, созданная с помощью MacroRecorder, называется макросом.

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

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

Запись макросов в приложении Excel

Для работы с макросами в приложении Excel имеется специальная панель.

Рис. Панель для работы с макросами

Для вызова этой панели необходимо выполнить последовательно команды меню: “Вид | Панель инструментов | Visual Basic”.

Для записи макроса необходимо:

1. Нажать на кнопку “Запись макроса” на панели Visual Basic.

2. В диалоговом окне “Запись макроса” присвоить имя макросу. (В имени макроса первым символом должна быть буква, не допускается использование пробелов.)

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

4. Нажать кнопку “Остановить запись”.

Пример:

Рассмотрим процедуру записи последовательности действий на следующем примере: определим максимальное значение в выделенном диапазоне ячеек.

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

Это действие в Excel можно выполнить с помощью стандартной функции МАКС, но мы продемонстрируем на этом примере, как сохранить последовательность действий пользователя и на их основе создать макрос.

Выполним следующие действия:

1. Открываем новую книгу.

2. Создаем таблицу по приведенному образцу.

3. В ячейке D10 наберите “Максимальная масса в граммах”. Курсор после набора текста может находиться в любой ячейке, кроме ячейки, в которой мы хотим получить результат. На панели Visual Basic нажмем на кнопку “Запись макроса”. Появится диалоговое окно “Запись макроса”:

A

B

C

D

E

1

Название

Страна происхождения

Когда найден

Масса в каратах

Масса в граммах

2

Великий Могол

Индия

XVII век

787,0

157,40

3

Джонкер

Южная Африка

1934

726,0

145,20

4

Звезда Сьерра-Леоне

Западная Африка

1972

969,9

193,78

5

Куллинан

Южная Африка

1905

3106,0

621,20

6

Президент Варгас

Бразилия

1938

726,6

145,32

7

Река Уойе

Западная Африка

1945

770,0

154,00

8

Эксцельсиор

Южная Африка

1893

971,5

194,30

Рис. Окно “Запись макроса”

Введем вместо названия “Макрос1” название макроса “Алмаз” и нажмем “ОК”. На экране появится панель инструментов “Остановить запись”. Теперь все производимые нами действия будут записываться до тех пор, пока не будет нажата эта кнопка. Главное не выполнять никаких лишних действий. Все наши действия фиксируются и записываются.

Установим курсор в ячейку E10. В этой ячейке должен появиться результат.

4. Выполним команду “Вставка | Функция”. Появится диалоговое окно “Мастер функций”. В окне “Категории функций” выберем “Статистические”. Затем выберите функцию МАКС. Появится диалоговое окно, в первой строке которого необходимо указать диапазон, в котором мы будем искать максимальное значение, — E2:E9. Нажмем “ОК”.

5. Щелкнем на кнопке “Остановить запись” на панели Visual Basic. Запись макроса завершена.

Выполнение макросов

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

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

Рис. Диалоговое окно функции МАКС

Затем:

1. Установим курсор в любую ячейку листа.

2. Выполните команду “Сервис | Макрос | Макросы”. Появится диалоговое окно «Макрос»

Рис. Диалоговое окно “Макрос”

3. Выделим макрос “Алмаз” и щелкнем по кнопке “Выполнить”. В ячейке E10 появится результат.

Редактирование макросов

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

Выделим макрос “Алмаз” и щелкнем по кнопке “Изменить”. Откроется окно редактора.

Рис. Использование редактора Visual Basic для просмотра и редактирования кода VBA

При записи макроса выполнялись всего два действия. Сначала мы установили курсор в ячейку E10. На языке VBA этому действию соответствует строка:

Range(«E10»).Select

Затем мы вызвали функцию МАКС и в качестве аргумента указали диапазон ячеек E2:E9:

ActiveCell.FormulaR1C1 = «=MAX(R[-8]C:R[-1]C)»

Полученный код можно редактировать непосредственно в редакторе Visual Basic. Изменим размер шрифта в ячейке E10 на 16:

Range(«E10»).Font.Size = 16

Можно также изменить цвет шрифта. Например, изменим цвет текста в ячейке на красный:

Range(«E10»).Font.ColorIndex = 3.

Значения, которые может принять свойство Font.ColorIndex, изменяются от 1 до 56.

После внесенных изменений текст макроса стал следующим:

Sub Алмаз()

‘ Алмаз Макрос

Range(«E10»).Select

ActiveCell.FormulaR1C1 = «=MAX(R[-8]C:R[-1]C)»

Range(«E10»).Font.Size = 16

Range(«E10»).Font.ColorIndex = 3

End Sub

Закрываем окно редактора, вернемся на лист Excel, удалим содержимое ячейки E10 и запустим макрос на выполнение.

Назначение макроса графическим изображениям

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

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

Используя панель “Рисование”, нарисуем на листе любую автофигуру. Щелкнем правой кнопкой мыши на изображении и в открывшемся контекстном меню выберем команду “Назначить макрос”. Отобразится диалоговое окно “Назначить макрос объекту”. Затем необходимо выбрать макрос “Алмаз” и щелкнуть вне графического изображения, чтобы снять выделение с объекта.

Теперь макрос “Алмаз” можно запустить посредством щелчка на автофигуре.

Рис. Автофигура и кнопка для запуска макроса

Запустить макрос на выполнение можно и другим способом, использовав командную кнопку. Вставить командую кнопку непосредственно на рабочий лист Excel можно с помощью панели инструментов “Формы”. Затем необходимо назначить ей наш макрос.

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

Для того чтобы удалить макрос, надо:

1. Выполнить команду “Сервис | Макрос | Макросы”. Появится уже знакомое диалоговое окно.

2. Выделить макрос, подлежащий удалению, и щелкнуть по кнопке “Удалить”.

3. Подтвердить выполнение операции в специальном окне, которое появится.

Ограниченность макросов

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

Эти ограничения приводят к необходимости создания программ на VBA.

5. Пользовательские формы

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

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

Работа с пользовательской формой состоит из нескольких этапов:

Открыть или создать файл для работы;

Перейти в редактор Visual Basic;

Создать пользовательскую форму;

Применить к созданной форме свойства;

Создать в форме элементы управления;

Написать процедуры обработки событий.

Панель элементов управления

При создании экранной формы автоматически отображается “Панель инструментов”. “Панель инструментов” содержит элементы управления, которые можно использовать в экранной форме. Если панель инструментов не появилась при создании экранной формы, то вызвать элементы управления можно, используя команду View | ToolBox или нажав на кнопку .  “Панель инструментов” (или “Панель элементов управления”) предназначена для создания и редактирования объектов вашего приложения. При написании программ на VBA мы обязательно столкнемся с английскими названиями элементов управления, поэтому в таблице приведем русские и английские названия элементов управления.

Панель инструментов

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

TextBox (поле) — элемент для ввода текста пользователем, который в последующем используется в программе.

CommandButton (кнопка управления) — элемент, с помощью которого в пользовательскую форму можно вставить командную кнопку. При нажатии на командную кнопку выполняются запрограммированные вами действия.

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

ComboBox (поле со списком) — применяется для хранения списка значений. Этот элемент сочетает возможности элементов ListBox и TextBox.

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

выбрать цвет либо сделать изображение более светлым или более темным.

SpinButton (счетчик) — используется для ввода или изменения числовых значений.

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

CheckBox (флажок) — предоставляет пользователю возможность выбора. Флажок обычно имеет два состояния: установленное и сброшенное.

Togglebutton (выключатель) — кнопка, которая остается нажатой после щелчка на ней, и возвращается в исходное состояние после повторного щелчка.

Frame (рамка) — используется для визуального объединения каких-либо элементов управления в группу, показывая, что эти элементы связаны между собой.

Image (рисунок) — позволяет вставлять графические элементы в экранные формы. С помощью этого элемента можно вставлять изображения из графических файлов следующих типов: bmp; cur; gif; ico; jpg; wmf.

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

TabStrip (набор вкладок) — элемент управления, который содержит одну или несколько вкладок. Используется для организации в группы связанной информации.

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

Наиболее часто используемыми являются:

Label (надпись);

TextBox (поле);

CommandButton (кнопка управления);

Image (рисунок);

OptionButton (переключатель);

CheckBox (флажок).

Создание пользовательской формы

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

1. Открыть новый файл или любой файл, в котором вы уже работали.

2. Выполнить команду меню Сервис | Макрос | Редактор Visual Basic. Откроется окно редактора Visual Basic.

3. Щелкнуть на кнопке Insert UserForm панели инструментов окна редактора Visual Basic или выполнить команду Insert | UserForm (Вставка | Экранная форма). Появится новая экранная форма.

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

После создания формы необходимо просмотреть свойства этого объекта и изменить установки, если это требуется по условию задачи. Для отображения окна свойств надо выбрать команду View | Properties Window (Вид | Окно свойств) или щелкнуть по одноименной кнопке на панели инструментов .

Наиболее часто используемые свойства объекта UserForm

Name

Имя пользовательской формы

Caption

Текст, отображаемый в строке заголовка формы

BorderStyle

Устанавливает тип границы

Picture

Указывает рисунок, отображаемый как фон формы

Left и Top

Указывает местоположение верхнего левого угла формы в пунктах

Height  и  Width

Возвращает высоту и ширину формы в пунктах

SpecialEffect

Устанавливает тип отображения  рабочего поля формы

StartUpPosition

Возвращает значение, определяющее положение формы при ее первом отображении на экране. Допустимые значения:

  1. Manual (начальное значение не устанавливается);
  2. Center Owner (выравнивание по центру объекта, которому принадлежит форма);
  3. Center Screen (выравнивание по центру экрана);
  4. Windows Default (положение верхнего левого угла экрана)

Наиболее часто используемые методы объекта UserForm

Show

Отображает форму на экране

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

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

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

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

После успешного завершения разработки экранной формы можно просмотреть в действии полученный результат с помощью команды “Run | Run Sub/UserForm” (“Выполнить | Выполнить процедуру/экранную форму”) или нажать клавишу . Форма отобразится поверх текущей рабочей книги. Щелчок на кнопке “Закрыть” (находится в верхнем правом углу формы) закроет экранную форму и возвратит в редактор Visual Basic.

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

6. Рисунки в пользовательских формах

Объект Image служит для размещения рисунка, загружаемого из графического файла.

Свойства объекта Image (рисунок)

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

Тестирование и отладка программ

Процесс исправления ошибок называется отладкой.

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

Отладка программ и обработка ошибок — это не одно и то же, но они тесно связаны друг с другом.

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

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

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

Однако по мере увеличения размеров и сложности программ находить их становится все труднее. В таких случаях необходимо пользоваться средствами отладки VBA.

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

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

Тестирование — это процесс выполнения процедуры и исследование всех аспектов ее работы.

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

Все возможные ошибки можно разделить на три вида:

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

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

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

Компиляция — это процесс преобразования программы, написанной на алгоритмическом языке, в язык машинных кодов. Если в программе есть синтаксические ошибки, то процесс компиляции прекращается, строки с ошибкой закрашиваются желтым цветом и выдается соответствующее сообщение. Для продолжения выполнения программы необходимо исправить ошибку и нажать кнопку “Continue” на стандартной панели редактора VBA. Или прервать выполнение программы, нажав на кнопку “Reset” , исправить ошибку в программе, а затем заново запустить ее. При обнаружении ошибки компилятор выдает сообщение с указанием номера ошибки. В этом случае полезно, воспользовавшись справочной системой редактора VBA, определить характер ошибки и исправить ее.

Рис.Редактор Visual Basic немедленно реагирует на синтаксические ошибки

7.  Стандартные диалоговые окна

Функция для создания окна сообщений записывается так:

MsgBox (Сообщение [,Атрибуты] [,Заголовок]).

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

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

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

Атрибуты = Параметр1 + Параметр2.

Значение Параметр1 устанавливает число и тип кнопок в окне сообщений.

В таблице приведены возможные значения этого параметра:

0

Отображается кнопка «ОК»

1

Отображаются кнопки «ОК» и «Cancel» (отмена)

2

Отображаются кнопки «Abort»  (стоп), «Retry» (повтор),  и «Ignore» (пропустить)

3

Отображаются кнопки «Yes» (да), «No» (нет), «Cancel» (отмена)

4

Отображаются кнопки «Yes» (да), «No» (нет)

5

Отображаются кнопки «Retry» (повтор), «Cancel» (отмена)

Если аргумент Атрибуты не указан, то VBA предполагает, что в диалоговом окне сообщений присутствует только кнопка “ОК”.

Значение Параметр2 определяет вид сообщения и пиктограмму, которая помещается в окно сообщений.

Параметр 2

Вид сообщения

Пиктограмма

16

Отображается значок критического сообщения

32

Отображается вопросительный знак (предупреждение)

48

Отображается восклицательный знак (предупреждение)

64

Отображается значок информационного сообщения

Заголовок — строка в заголовке окна сообщений. Если этот аргумент опущен, то в строке заголовка отображается “Microsoft Excel”.

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

Окно ввода

Окно ввода, как и окно сообщений, может отображаться оператором или функцией.

Функция InputBox применяется для ввода чисел или текста. Эта функция отображает диалоговое окно ввода, содержащее поле ввода и поясняющий текст; ее синтаксис таков:

InputBox(Сообщение[, Заголовок ] [, Умолчание]).

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

Заголовок — это надпись в строке заголовка окна ввода.

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

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

В отличие от MsgBox параметр Атрибуты отсутствует, но появляется параметр Умолчание: в нем задается строка, которая по умолчанию будет находиться в текстовом поле. При нажатии кнопки “ОК” содержимое поля присваивается переменной, а при нажатии на кнопку “Cancel” возвращается строка нулевой длины.

ВНИМАНИЕ! Функция InputBox возвращает строку, а функция MsgBox возвращает значение целого типа.

Объединение текстовых строк

При объединении нескольких текстовых строк в одну используется символ конкатенации “&” (амперсанд) или “+” (плюс). Можно объединять числовые и символьные значения.

8. VBA в приложении к Word .

В данном разделе рассмотрим такие понятия, как объекты и макросы.

Объекты.

Пакет Word в сочетании с VBA предоставляет широкие возможности для работы с текстом или фрагментами текста. Можно вызвать для обработки какой-либо абзац, предложение и т.д.

Для доступа к тем или иным фрагментам документа используют такие объекты, как Sections (разделы), Paragraphs (абзацы), Sentences (предложения), Words (слова) и др.

Пример:

Words (6)

Дает возможность перейти к шестому слову в документе

Sentences (11)

Переход к одиннадцатому предложению

Words(6) дает возможность перейти к шестому
слову в документе

Sentences(11) переход к одиннадцатому предложению

После перехода к определенной части документа можно использовать объект Font, позволяющий изменять свойства шрифта. Этот объект содержит методы, находящиеся в панели меню “Формат | Шрифт”.

Объект Range является базовым в операции редактирования. Его можно рассматривать как непрерывный фрагмент текста (никак не связанный с выделенной областью), который не зависит от положения курсора. Range включает в себя такие объекты, как Words (слова) или Sentences (предложения); при обращении к ним сам объект Range указывать не нужно, тогда как для Sections (разделы) или Paragraphs (абзацы) это делать необходимо.

Объект Range поддерживает основные методы, которыми пользуются при форматировании текста (такие, как “Копировать”, “Вставить”, “Вырезать”, команды меню “Формат”).

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

1

ASC (X$)

Переводит двоичный код символа в десятичное число

2

LEN (X$)

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

3

MID$ (X$, Y,Z)

Выдает последовательность Z символов из строки X$  с позиции Y

4

STR$ (X)

Преобразует значение X из числовой формы в символьную

5

CHR$ (X)

Преобразует код в символ

6

LEFT$(A$,N)

Выделяет N левых символов строки A$

7

RIGHT$ (X$,N)

Выделяет N первых символов строки  X$

Primer.Sentences(2).Font.ColorIndex=wdGreen

В документе Primer во 2-м предложении устанавливает зеленый цвет шрифта

Primer.Sentences(2).Font.Size=16

В документе Primer во 2-м предложении устанавливает шрифт размером 16 пунктов

Primer.Sentences(2).Font.Underline=wdUnderlineDouble

В документе Primer во 2-м предложении устанавливает шрифт с двойным подчеркиванием

Primer.Sentences(2).Font.Name=”Arial”

В документе Primer во 2-м предложении устанавливается шрифт ”Arial”

Primer.Range(1,15).Bold=True

Символы с 1-го по 15-й выделяется жирным шрифтом

Primer.Paragraphs(5).Range.InsertAfter «ПРИВЕТ»

В документ Primer после 5-го абзаца вставляется текст «ПРИВЕТ»

Primer.Sentences(5).InsertAfter «ПРИВЕТ»

Текст «ПРИВЕТ» вставляется после 5-го предложения

Primer.Words(5).InsertAfter «ПРИВЕТ»

Текст «ПРИВЕТ» вставляется после 5-го слова

Макросы.

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

Для записи макроса необходимо:

1. Выбрать в меню “Сервис | Макрос | Начать запись”.

2. Ввести в окне “Запись макроса” в поле “Имя макроса” имя нового макроса.

3. Выбрать в списке “Макрос доступен для” шаблон или документ, в котором будет храниться макрос.

4. Ввести описание макроса в поле “Описание”.

5. Ввести в поле “Назначить макрос” кнопку “Панели” (для назначения макросу кнопки панели инструментов или команды меню); кнопку “Клавишам” (для назначения макросу сочетания клавиш); если макросу назначение не требуется, нажмите кнопку “OK”. Если в процессе работы вы часто используете какой-либо макрос, то целесообразно назначить ему кнопку или сочетание клавиш.

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

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

7. Нажать после записи макроса кнопку “Остановить запись”.

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

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

1. Выбрать “Файл | Сохранить как | Сервис”. Появится диалоговое окно “Сохранение документа”.

2. Выбрать в меню “Сервис” пункт “Параметры безопасности”. Появится диалоговое окно “Безопасность”.

3. Щелкнуть по кнопке “Защита от макросов”, чтобы изменить уровень безопасности файла (по умолчанию установлен Высокий уровень безопасности, поэтому при повторном открытии файла ваши программы выполняться не будут).

4. Выбрать в появившемся диалоговом окне на закладке “Уровень безопасности” Средний или Низкий уровень безопасности. При выборе Среднего уровня безопасности при открытии документа будет появляться запрос на включение или отключение макросов. Для того чтобы программы и макросы в документе работали, надо выбрать “Не отключать макросы”.

“Не отключать макросы”.

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

5. Перейти на закладку “Надежные источники” и включить флажок “Доверять доступ к Visual Basic Project”.

6. Сохранить документ.

9. VBA в приложении Power Point. Создание презентации.

Применение пользовательских форм.

В приложении Power Point с помощью VBA можно автоматизировать множество задач. Рассмотрим применение пользовательских форм для проектирования тестов и различных задач в PowerPoint. Кроме того, имеется возможность не только ввести информацию, но и использовать элементы управления. Для этого требуется следовать двум простым правилам:

1. Макросы необходимо назначить кнопкам панелей инструментов.

2. Элементы управления необходимо разместить в диалоговых окнах.

“Умеешь ли ты считать”

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

Порядок работы:

1. Открыть Power Point и создать титульный слайд; оформить на нем пять кнопок:

  1.  Посредством Панели элементов:

Сложение и вычитание от 1 до 20

Сложение и вычитание от 1 до 200

  1.  Через панель рисования:

2. Записать программы вызова пользовательских форм (через контекстное меню “Исходный текст”, выделив тематические кнопки).

Тексты программ кнопок:

Private Sub CommandButton1_Click()

UserForm1.Show

End Sub

Private Sub CommandButton2_Click()

UserForm4.Show

End Sub

Private Sub CommandButton3_Click()

UserForm3.Show

End Sub

Private Sub CommandButton4_Click()

UserForm2.Show

End Sub

3. Настроить кнопку “Выход” на завершение показа.

4. Спроектировать в редакторе Visual Basic пользовательскую форму UserForm1 “Сложение и вычитание от 1 до 10”.

При проектировании формы Свойство Caption для меток Label сделать пустым; отформатировать все элементы.

Далее следует описать событийные процедуры при нажатии на кнопки.

Объявление глобальных переменных

Public a As Integer

Public b As Integer

Public R As Integer

Public v As Integer

Public n As Integer

Public f As Integer

Программа для кнопки “Далее”

Private Sub CommandButton1_Click()

‘ a — переменная для первого числа

‘ b — переменная для второго числа

‘ R — переменная для получения результата

‘ v, n — переменные для подсчета верных

‘ и неверных ответов

‘ f — переменная оператора выбора

f = f + 1

Select Case f

Case 1

‘ Присваиваем значения переменным

‘ a и b через RND в интервале (0;9)

b = Int(10 * Rnd())

a = Int(10 * Rnd())

‘ Формируем в надписях – или + и =

Label3.Caption = «-«

Label5.Caption = «=»

Определяем большее из чисел, и это — первое число, меньшее — второе число:

If a > b Then

Label2.Caption = a

Label4.Caption = b

Else

Label2.Caption = b

Label4.Caption = a

End If

‘ Вычисляем результат

R = Abs(a — b)

Case 2

Сравниваем результат и вводимый ответ, подсчитываем количество

If Val(R) = Val(TextBox1) Then

v = v + 1

Label12.Caption = «Верно»

Else

n = n + 1

Label12.Caption = «Неверно»

End If

Case 3

CLS

Label12.Caption = «»

b = Int(10 * Rnd())

a = Int(10 * Rnd())

Label2.Caption = a

Label4.Caption = b

Label3.Caption = «+»

Label5.Caption = «=»

R = a + b

Написать аналогичные программы для следующих 9 примеров.

‘ Проверка результата в примере 10

Case 20

If Val(R) = Val(TextBox1) Then

v = v + 1

Label12.Caption = «Верно»

Else

n = n + 1

Label12.Caption = «Неверно»

End If

‘ Вводим в надписи количество верных и неверных ответов, даем напутствия

Label7.Caption = «Ваш результат»

Label8.Caption = «Верно»

Label10.Caption = Str(v)

Label9.Caption = «Неверно»

Label11.Caption = Str(n)

If v = 10 Then Label12.Caption =

» Молодец!!!» Else Label12.Caption =

«Еще поработай над счетом!!!»

Case 21

UserForm1.Hide

End Select

End Sub

Программа кнопки “Снова”

Private Sub CommandButton2_Click()

Набираем программный код для кнопки снова (для этого щелкнем по кнопке)

CLS

‘Обнуляем переменные, подсчитывающие

результат

n = 0

v = 0

‘В надписях стираем информацию

Label10.Caption = «»

Label11.Caption = «»

Label2.Caption = «»

Label4.Caption = «»

Label3.Caption = «»

Label5.Caption = «»

Label7.Caption = «»

Label8.Caption = «»

Label9.Caption = «»

f = 0

End Sub

Sub CLS()

TextBox1.Text = «»

End Sub

В рабочем состоянии форма выглядит так:

5. Спроектировать пользовательские формы UserForm2, UserForm3, UserForm4.

6. Записать программы в кнопках.

Вид формы UserForm2 “Сложение и вычитание от 1 до 200” может быть таким:

Примерный вид формы UserForm3 “Таблица умножения”:

А вот такой может быть форма UserForm4 “Посчитай”:

7. После этого проверяется работоспособность проекта и сохраняется работа.

10. Вывод.

В результате многолетнего труда Microsoft позиционирует свой пакет MSOffice не просто как набор прикладных программ, а как комплексную платформу для создания бизнес приложений, решающих широкий круг специализированных задач пользователей. Именно этим объясняется появлением в его составе специального выпуска для разработчиков приложений — Developer Edition.

Одновременно, VBA активно продвигает в качестве отраслевого стандарта для управления программируемыми приложениями, объявив о возможности его лицензирования. Сегодня уже более ста ведущих мировых фирм-разработчиков прикладных программ приобрели лицензии на него и включают VBA в состав своих программных продуктов.

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

Десять лет назад во всем мире было не более двух миллионов программистов. Сегодня их насчитывается около десяти миллионов, из них не менее 70 процентов используют в качестве хотя бы одно из инструментов VB или VBA.

Список литературы:

  1. А.Васильев, А.Андреев. VBA в Office 2000. Учебный курс. С-Пб.:  «Питер», 2001
  2. Биллиг В.А. Средства разработки VBA-программиста. Офисное программирование. Том 1. М.: Издательско-торговый дом «Русская Редакция», 2001.
  3. Биллиг В.А. Мир объектов Excel 2000. М.: Издательско-торговый дом «Русская Редакция», 2001.
  4. В.И.Король. Visual Basic 6.0, Visual Basic for Applications 6.0. Язык программирования. Справочник с примерами. М.: Издательство КУДИЦ, 2000.
  5. В. Комягин, А. Коцюбинский, «Современный самоучитель работы на персональном компьютере», Москва 2003
  6. О.А. Житкова, Т.И. Панфилова, «VBA в приложении к Excel, Word и Power Point» Москва 2006.

Содержание

  1. Программирование на VBA в среде MS Excel
  2. Написание программы на языке VBA, которая вводит исходные данные, выполняет расчеты и выводит на экран: исходные данные в виде таблицы, где указаны наименования фруктово-ягодных культур, закупочные цены каждой культуры и урожай в центнерах в каждом году.
  3. Подобные документы
  4. курсовая работа Программирование на VBA в среде MS Excel
  5. Написание программы на языке VBA, которая вводит исходные данные, выполняет расчеты и выводит на экран: исходные данные в виде таблицы, где указаны наименования фруктово-ягодных культур, закупочные цены каждой культуры и урожай в центнерах в каждом году.
  6. Подобные документы
  7. Создание приложений Excel на языке VBA
  8. Создание приложения Excel для расчета внутренней нормы доходности. Встроенный язык программирования Visual Basic for Аpplications (VBA) в Microsoft Excel. Алгоритм программы с описанием функций составных частей и связи между ними, листинг программы.
  9. Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

Программирование на VBA в среде MS Excel

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

Подобные документы

Написание программы на языке VBA, которая вводит исходные данные, выполняет расчеты и выводит на экран исходные данные. Использование блок-схемы. Описание переменных и алгоритма программы. Листинг программы. Описание входных данных и результат вычисления.

контрольная работа, добавлен 20.12.2011

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

курсовая работа, добавлен 01.12.2012

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

контрольная работа, добавлен 23.02.2015

Разработка программы на языке VBA, которая вводит исходные данные, выполняет расчеты и выводит на экран. Описание алгоритма и листинг программы. Описание входных данных и результат вычислений. Оформление результатов работы программы на листе «Результат».

курсовая работа, добавлен 09.01.2014

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

курсовая работа, добавлен 01.12.2012

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

методичка, добавлен 12.01.2014

Работа с базами данных Microsoft Excel. Объединение и разделение ячеек или данных, исходные данные сводной таблицы и сводной диаграммы, консолидация данных. Создание таблицы методом подстановки с двумя переменными. Импорт, запрос данных с веб-страницы.

контрольная работа, добавлен 14.10.2009

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

курсовая работа, добавлен 27.04.2016

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

презентация, добавлен 09.12.2013

Разработка блок-схемы алгоритма и программы для вычисления значений выражения на языке программирования Delphi. Написание программы на алгоритмическом языке для обработки массивов. Использование оператора выбора. Вычисление таблицы значений функции.

контрольная работа, добавлен 20.08.2017

Источник

курсовая работа Программирование на VBA в среде MS Excel

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

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

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

Рубрика Программирование, компьютеры и кибернетика
Вид курсовая работа
Язык русский
Дата добавления 25.11.2011
Размер файла 3,3 M

Подобные документы

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

курсовая работа [680,3 K], добавлен 03.08.2009

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

курсовая работа [2,7 M], добавлен 01.12.2010

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

реферат [25,4 K], добавлен 10.12.2010

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

курсовая работа [721,4 K], добавлен 10.11.2010

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

курсовая работа [1,8 M], добавлен 19.04.2011

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

курсовая работа [2,4 M], добавлен 17.01.2015

Написание программы «телеграф», который принимает от пользователя сообщения и выводит его на экран в виде последовательности точек и тире. Их вывод сортируется звуковым сигналом соответствующей длительности. Программа написана на языке Turbo Pascal.

курсовая работа [565,6 K], добавлен 18.08.2008

Источник

Создание приложений Excel на языке VBA

Создание приложения Excel для расчета внутренней нормы доходности. Встроенный язык программирования Visual Basic for Аpplications (VBA) в Microsoft Excel. Алгоритм программы с описанием функций составных частей и связи между ними, листинг программы.

Рубрика Программирование, компьютеры и кибернетика
Вид курсовая работа
Язык русский
Дата добавления 23.01.2016
Размер файла 189,3 K

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

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

Размещено на http://www.allbest.ru/

по дисциплине «Программирование»

Создание приложений Excel на языке VBA

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

Microsoft Excel имеет встроенный язык программирования — Visual Basic for Аpplications (VBA). Этот язык позволяет создавать приложения, выполняемые в среде Microsoft Office. Это могут быть разнообразные аналитические программы, финансовые системы, программы учета кадров, системы автоматического создания официальных писем/документов с помощью библиотеки готовых шаблонов и т.п. При этом интерфейс создаваемой программы может быть совершенно непохожим на интерфейс того приложения, в котором она написана.

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

VBA — `объектно — ориентированный язык программирования высокого уровня, являющийся одним из диалектов языка программирования Visual Basic.

Программа Excel, рабочая книга, рабочие листы, ячейки — примеры объектов. Каждый объект имеет методы и свойства. Например, свойств “visible” программы Excel позволяет отображать или делать не видимым окно программы Excel. Метод “Quit” позволяет завершить работу с программой Excel. Кроме того, с объектами могут происходить различные события. Открытие программы, открытие и закрытие рабочей книги — примеры событий. Суть программирования на VBA заключается в том, чтобы написать отклик на событие.

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

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

программирование еxcel доходность

1. Постановка задачи

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

Внутренняя норма доходности (англ. internal rate of return, общепринятое сокращение — IRR (ВНД)) — это процентная ставка, при которой чистая приведённая стоимость (чистый дисконтированный доход — NPV) равна 0. NPV рассчитывается на основании потока платежей, дисконтированного к сегодняшнему дню.

Таким образом, для потока платежей CF, где CFt — платёж через лет () и начальной инвестиции в размере IC=? CFo внутренняя норма доходности рассчитывается из уравнения:

Если все CFt положительны, то уравнение имеет единственный корень, больший ?1. Если в уравнении все платежи и свободный член положительны, то уравнение имеет положительный корень, то есть внутренняя норма доходности положительна.

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

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

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

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

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

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

2. Математические методы решения задачи

Для нахождения внутренней нормы доходности используются численные методы решения нелинейных уравнений. В программе используется метод половинного деления. Рассмотрим его содержание.

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

Будем считать, что корень t функции f(x) отделён на отрезке [a;b]. Задача заключается в том, чтобы найти и уточнить этот корень методом половинного деления. Другими словами, требуется найти приближённое значение корня с заданной точностью .

Пусть функция f непрерывна на отрезке [a;b], и — единственный корень уравнения

Поделим отрезок [a;b] пополам. Получим точку и два отрезка [a;c] и [c;b].

Если , то корень t найден (t=c).

Если нет, то из двух полученных отрезков [a;c] и [c;b] надо выбрать один [a1;b1] такой, что , то есть

Новый отрезок [a1;b1] делим пополам. Получаем середину этого отрезка так далее.

Для того, чтобы найти приближённое значение корня с точностью до , необходимо остановить процесс половинного деления на таком шаге n, на котором и вычислить Тогда можно взять

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

Перед запуском программы в ячейки рабочего листа «Данные» необходимо ввести размеры платежей и число платежей. Программа запускается с помощью программы run. Для запуска программы необходимо открыть окно «Макросы». Окно программы показано на рисунке. В нем пользователь должен ввести значения левой и правой границ корня и указать точность вычислений. Рассчитанная норма доходности записывается в одну из ячеек рабочего листа. При необходимости можно сохранить найденное число.

Программа может работать в различных версиях Excel: Excel 97, Excel 2002 и Excel 2013 под управлением операционной системы Windows. Приведем листинг программы.

3. Листинг программы

Private Sub Workbook_Open()

Private Sub CommandButton1_Click()

Private Sub CommandButton3_Click()

Dim x(100) As Double

Dim n As Integer

Dim p As Double

Dim i As Integer

Dim epsilon As Double

Dim y1 As Double

Dim y2 As Double

Dim a As Double

Dim b As Double

Dim c As Double

Dim s As Double

Dim s1 As Double

If IsEmpty(Worksheets(«Данные»).Range(«f2»)) = True Or _

IsNumeric(Worksheets(«Данные»).Range(«f2»).Value) = False Then

MsgBox » Не введено число платежей или не числовое данное», vbInformation, «Ошибка»

If IsEmpty(Worksheets(«Данные»).Range(«g1»)) = True Or _

IsNumeric(Worksheets(«Данные»).Range(«g1»).Value) = False Then

MsgBox «Не введен объем инвестиций или не числовое данное», vbInformation, «Ошибка»

If IsNumeric(TextBox1.Value) = False Then

MsgBox «Ошибка при вводе данных», vbInformation, «Ошибка»

If IsNumeric(TextBox2.Value) = False Then

MsgBox «Ошибка при вводе данных», vbInformation, «Ошибка»

MsgBox «Левая граница больше или равна правой. Проверьте данные», vbInformation, «Ошибка»

If IsNumeric(TextBox3.Value) = False Then

MsgBox «Ошибка при вводе данных», vbInformation, «Ошибка»

Источник

ВВЕДЕНИЕ

Microsoft Excel имеет встроенный язык программирования — Visual Basic for Аpplications (VBA). Этот язык позволяет создавать приложения, выполняемые в среде Microsoft Office. Это могут быть разнообразные аналитические программы, финансовые системы, программы учета кадров, системы автоматического создания официальных писем/документов с помощью библиотеки готовых шаблонов и т.п. При этом интерфейс создаваемой программы может быть совершенно непохожим на интерфейс того приложения, в котором она написана.

VBA сочетает в себе практически неограниченные возможности с простотой изучения и использования. Теперь большинство функций можно описать, не прибегая к программированию. В том случае, если возможностей языка недостаточно, можно обратиться к API-функциям Windows. Пожалуй, самое главное достоинство VBA в том, что этот язык является единым для всех офисных приложений Microsoft и поэтому позволяет связывать их между собой. Уже сейчас из программы, написанной в Excel, можно обращаться к объектам Word для Windows, а также Microsoft Project. Это открывает заманчивые перспективы. Представьте, что пользователь на конкретном рабочем месте должен на основе некоторых данных, извлекаемых из базы, делать их анализ, строить диаграммы и проектировать деятельность организации, а также автоматически выполнять рассылку этих обработанных данных по некоторым адресам вместе с сопроводительным письмом. Все это можно сделать средствами офисных продуктов Microsoft, однако при этом пользователь должен в совершенстве овладеть каждым из них. В случае если программа для решения этой задачи написана на VBA, пользователю придется изучить только ее.

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

Одним из важнейших функциональных расширений программы, предназначенным для профессионалов, является встроенная в Excel Среда программирования Visual Basic (VBA) для решения прикладных задач. Благодаря VBA фирме Microsoft удалось не только расширить возможности языка макрокоманд Excel 4.0, но и ввести новый уровень прикладного программирования, поскольку VBA позволяет создавать полноценные прикладные пакеты, которые по своим функциям выходят далеко за рамки обработки электронных таблиц.

Краткое описание VBA

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

Поскольку основой приложе­ний Microsoft послужил один и тот же язык программирования, веро­ятно, многим придет в голову мысль воспользоваться им. Точно так же, как пользователям Win­dows для подготовки множества программ необходимо освоить один интерфейс, в V BA достаточ­но изучить одну среду программи­рования, чтобы составлять разно­образные приложения. Около 40 компаний — производителей про­граммного обеспечения заключили с корпорацией Microsoft соглаше­ние о включении VBA в их про­дукты. Первой из этих компаний на рынок вышла фирма Visio Corp., которая интегрировала VBA в пакеты Visio Professional и Visio Technical, версия 4.5. Можно ожи дать от таких фирм агрессивной рыночной политики в отношении VBA, поскольку с этим языком их продукты оказались в заметном выигрыше. Настоящее имя VBA — Visual Basic Application Edition, и он на самом деле относится к семейству VB, следовательно, вы­зывает повышенный интерес как самостоятельное инструменталь­ное средство.

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

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

Точно так же, как можно составить макроко­манду Office, которая обращается к программам Word и Excel, мож­но разработать VBA-программу, сочетающую в себе средства Access и Visio. Составное приложение для планировки кухни можно считать неким гибридом Access с механиз­мом черчения или Visio с базой данных.

VBA — собственное подмно­жество VB5, но на самом деле в VBA есть почти все, что можно найти в VB5. Надо признать, что незначительные отличия все же имеются (например, запуск из Word, а не в автономном режиме), но в любом случае программиро­вание осуществляется одинаково. Объектные модели Office 97 име­ют силу до тех пор, пока вы­полняются приложения, которым они принадлежат, поэтому и VBA, и VB5 могут манипулировать ими. Vs Мы видим, что от аналогичной в VB5 интегрированная среда разработ­ки в VBA почти ничем не отли­чается.

ПРИМЕР ВЗАИМОДЕЙСТВИЯ EXCEL И VISUAL BASIC

Начиная с версии 5.0 в программу Excel включен специальный язык программирования, который получил название Visual Basic for Applications (VBA).

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

Разработка языка программирования VBA, встраиваемого в прикладные системы, является одним из стратегических направлений компании Microsoft. Этот язык уже интегрирован в такие программы, как Word for Windows, Power Point и ряд других. VBA позволяет создавать программные модули, меню, диалоговые окна и другие ресурсы в среде Windows. Благодаря этому языку появляется возможность значительно расширить набор функций в Excel, а также создавать функции, значения которых зависят от некоторых условий и событий. В принципе, можно полностью перепрограммировать все функции программы Excel, если в этом появилась необходимость.

Программирование табличных функций.

Чтобы создать отдельный рабочий лист для программного модуля, щелкните по пиктограмме Insert Module из пиктографического меню Visual Basic (1-я пиктограмма) или вызовите директиву Module из меню Insert Macro. После этого появится новый рабочий лист «Modele1». В программном модуле нужно описать функцию на языке VBA. В окне программного модуля можно работать, как в окне небольшого текстового редактора, но при этом необходимо помнить, что Вы пишите текст программы. Описание функции должно начинаться оператором Function, за которым через пробел следуют название функции и ее аргументы, заключенные в скобки и разделенные запятыми. Затем идет собственно текст программного кода функции, а заканчиваться описание должно оператором End Function.

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

Function NDS(Value)

NDS=Value*0.15

End Function

Встраивание функций.

Щелкните по 3-й пиктограмме Object Browser из пиктографического меню VBA или вызовите одноименную директиву из меню View .

Функции, определенные пользователем, рассматриваются в программе Excel как самостоятельные объекты. В поле списка Methods/Properties: будет находиться имя новой функции. Щелкните мышью сначала по имени, а затем по командной кнопке Options, тогда откроется диалоговое окно Macro Options. В поле Description: введите поясняющий текст, который позднее будет использован Конструктором функций. В списке Function Category укажите категорию, в которую Вы хотите записать свою функцию. Например, функцию, вычисляющую налог на добавленную стоимость, следует поместить в категорию Financial. В дальнейшем Конструктор функций поместит Вашу функцию в указанную Вами категорию. Закройте окно Macro Options щелчком по командной кнопке OK, а окно Object Browser — кнопкой Close .

Применение функций.

Перейдите на рабочий лист, где будет расположена таблица. Переместите указатель ячеек в ячейку, в которой будет находиться формула, и введите в нее знак равенства. Затем щелкните по 14-й пиктограмме Конструктора функций на основной пиктографической панели.

Появится диалоговое окно Конструктора функций. На первом шаге выберите категорию Financial и в правом поле найдите свою функцию NDS. Щелкните по названию этой функции, после чего перейдите к следующему шагу, щелкнув по командной кнопке Next .

Откроется второе диалоговое окно Конструктора функций. Здесь можно будет увидеть Ваш комментарий к функции, который был введен ранее в окне макроопций. Укажите единственный аргумент для этой функции Value и закройте диалоговое окно Конструктора щелчком по кнопке Finish .

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

Введение

Курсовая
работа
выполнена
в
Excel
на
языке
Visual
Basic
(
VBA).

.

Поэтому разберем его более подробно.

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

Представление
данных в памяти

Данные — величины, обрабатываемые
программой. Имеется три основных вида
данных: константы, переменные и массивы.

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

Числовые константы могут быть целыми,
вещественными (с фиксированной или
плавающей точкой) и перечислимыми.

Целые константы могут быть десятичными,
восьмеричными и шестнадцатиричными.
Десятичная целая константа определена
как последовательность десятичных
чисел, начинающаяся не с нуля, если это
не число нуль. Восьмеричные константы
в Visual Basic for Application начинаются с префикса
&O и содержат числа от 0 до 7.
Шестнадцатиричные числа начинаются с
префикса &H и содержат числа от 0 до 9
и латинские буквы от A до F.

Примеры констант: 123, &O247, &H1F.

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

Примеры констант: 123.456, 3.402823E38.

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

Логические (булевы) константы
могут иметь лишь одно из двух значений:
да (истина, TRUE), нет (ложь, FALSE).

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

Строки
переменной длины, которые могут содержать
до приблизительно 2 миллиардов (2^31)
символов.

Строки
постоянной длины, которые могут содержать
от 1 до приблизительно 64K (2^16) символов.

Примеры строковых констант: «abcde»,
«информатика», «» (пустая
строка).

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

Типы данных

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

Тип данных

Размер

Диапазон значений

Byte (байт)

1 байт

От 0 до 255.

Boolean (логический)

2 байт

True или False.

Integer (целое)

2 байт

От -32 768 до 32 767.

Long (длинное целое)

4 байт

От -2 147 483 648 до 2 147 483 647.

Single (с плавающей точкой обычной
точности)

4 байт

От -3,402823E38 до -1,401298E-45 для отрицательных
значений; от 1,401298E-45 до 3,402823E38 для
положительных значений.

Double (с плавающей точкой двойной
точности)

8 байт

От -1,79769313486232E308 до -4,94065645841247E-324 для
отрицательных значений; от
4,94065645841247E-324 до 1,79769313486232E308 для
положительных значений.

Currency (денежный)

8 байт

От -922 337 203 685 477,5808 до 922 337 203 685 477,5807.

Decimal (масштабируемое целое)

14 байт

+/-79 228 162 514 264 337 593 543 950 335 без дробной
части; +/-7,9228162514264337593543950335 с 28 знаками
справа от запятой; минимальное
ненулевое значение имеет вид
+/-0,0000000000000000000000000001.

Date (даты и время)

8 байт

От 1 января 100 г. до 31 декабря 9999 г.

Object (объект)

4 байт

Любой указатель объекта.

String (строка переменной длины)

10 байт + длина строки

От 0 до приблизительно 2 миллиардов.

String (строка постоянной длины)

Длина строки

От 1 до приблизительно 65 400.

Variant (числовые подтипы)

16 байт

Любое числовое значение вплоть до
границ диапазона для типа Double.

Variant (строковые подтипы)

22 байт + длина строки

Как для строки (String) переменной
длины.

Тип данных, определяемый пользователем
(с помощью ключевого слова Type)

Объем определяется элементами

Диапазон каждого элемента определяется
его типом данных.

Поясним некоторые характерные для
VBA типы данных.

Byte — Массивы данного типа
служит для хранения двоичных данных,
например, изображений. Использование
данного типа предохраняет двоичные
данные во время преобразования формата.

Boolean — для хранения логических
(булевых) значений. По умолчанию значением
булевской переменной является False- ложь.

Currency — для хранения чисел с
дробной частью до четырех цифр и целой
частью до 15 цифр, то есть данных с
фиксированной десятичной точкой, удобных
для денежных вычислений. Числа с плавающей
десятичной точкой (Single, Double) имеют больший
диапазон значений, но могут приводить
к ошибкам округления.

Decimal — в версии 5.0 поддерживается
использование типа данных Decimal только
в пределах типа Variant, т.е. невозможно
описать переменную с типом Decimal.
Пользователь, однако, имеет возможность
создать переменную типа Variant с подтипом
Decimal с помощью функции CDec.

Object — поскольку VBA является
объектно-ориентированным языком, в нем
можно манипулировать различными
объектами, адреса расположения которых
в памяти (указатели) имеют этот тип.

String — по умолчанию данные
строкового типа имеют переменную длину
и могут удлиняться или укорачиваться.
Однако такие строки занимают на 10байт
памяти больше, поэтому можно объявить
строки фиксированной длины, чвно указав
количество символов. Если количество
символов будет меньше объявленного, то
свободные места заполняются пробелами,
при попытке занесения большего количества
символов лишние отбрасываются.

Variant — может быть использован
для хранения данных всех базовых типов
без выполнения преобразования (приведения)
типов. Применение данного типа позволяет
выполнять операции, не обращая внимание
на тип данных, которые они содержат.
Удобен для объявления переменных, тип
которых заранее неизвестен. Переменные
этого типа могут содержать специальные
значения: Empty, Null, Error.

Массивы

Как и в других языках программирования,
в
VBA можно
использовать мас-

сивы.

Разработка приложений на языке VBA в среде MS EXCEL по обработке данных для заданных объектов

Министерство высшего и среднего образования Российской
Федерации

Иркутский
Государственный Технический университет

Факультет Технологии и Компьютеризации Машиностроения

Кафедра Технологии Машиностроения

Курсовая работа по информатике на тему

«Разработка приложений на языке VBA в
среде MS EXCEL по обработке данных для заданных объектов»

Выполнили студенты группы ИСМ-03-1

Козулин С.П, Кононов И.В

Проверил: Буренков С.И_____________

Иркутск,
2004

План

1. Как все начиналось

— QuickBasic против TurboBasic

 -Эпоха Visual Basic

 -Visual Basic for
Applications

2. Обработка
модулей VBA

-Переименование, Удаление, Создание, Добавление, Экспорт,
Импорт модулей проекта
— Импорт и экспорт модуля из проекта в проект
— Импорт модуля через экспортируемый файл (а также модулей
обычного VB)
— Редакция модуля
— Обработка модулей VBA программно
— Экспорт модуля проекта в файл
— Импорт модуля проекта из файла
— Импорт модуля через организатор (данный код только для Word
приложения)
— Вставка новых строк в модуль проекта
— Удаление строк из модуля
—  Чтение строк из модуля
— Определение количества строк в модуле
— Переименование модулей проекта
— Удаление модулей проекта
— Определение количества модулей в проекте
— Создание нового модуля проекта

3. Постановка задачи и ее решение

4. Список использованной литературы

Как все начиналось

Язык
Basic был разработан профессорами Дартмутского колледжа Дж.Кемени и Т.Курцом в
1965 году как средство обучения и работы непрофессиональных программистов.
(Дартмутский колледж в штате Нью-Гампшир, США, был создан в середине 18 века,
это одно из старейший высших заведений Америки). Его назначение определено в
самом названии, которое является аббревиатурой слов Beginner’s All-purpose
Symbolic Instruction Code (многоцелевой язык символических инструкций для
начинающих) и при этом в дословном переводе означает «базовый».

Примечание. Раньше языки
программирования писались обязательно строчными буквами — BASIC, FORTRAN. В
1990 году Международная организация стандартов приняла решения, что они пишутся
как обычные имена собственные — строчной является только первая буква.

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

В силу
этих же причин Basic в основном применялся на мини — и микроЭВМ, которые в 70-е
годы имели оперативную память, объем которой кажется сегодня просто нереальным
(4-32 тысяч байт). Резкое развитие систем на основе Basic началось с появлением
в начале 80-х годов персональных компьютеров, производительность и популярность
которых растет вот уже двадцать лет невиданными темпами.

QuickBasic
против TurboBasic

В
конце 80-х годов насчитывалось около десятка систем Basic различных
фирм-разработчиков. Однако главная борьба шла между QuickBasic (компания
Microsoft) и TurboBasic (Borland). Вообще-то, конкуренция между этими двумя
разработчиками средств программирования шла по целому спектру языков — Basic,
Pascal и C. И результатом ее в 1989 году стало неявное мировое соглашение,
когда Microsoft отказалась от дальнейшей поддержки Pascal, а Borland — Basic.

Тогда
многие комментаторы язвительно замечали, что Microsoft отказалась от Pascal в
пользу Basic исключительно из-за личных пристрастий основателя и руководителя
корпорации Билла Гейтса. Действительно, разработка в 1975 году интерпретатора
Basic для микроЭВМ Altair 8800 была первым проектом двадцатилетних Билла Гейтса
и Пола Аллена, только что основавших фирму Micro-Soft (в то момент они были
единственными сотрудниками новой компании). После этого именно Пол Ален
занимался созданием Basic-систем и считается крестным отцом Visual Basic. В
свою очередь Билл Гейтс, перечисляя свои титулы, довольно часто добавляет
«Basic-программист».

Однако,
как мне представляется, победа QuickBasic определялась чисто технологическими
причинами — в этой системе была удачно реализована схема смешанного
использования традиционных Basic-технологий и классических методов создания
сложных программных систем. Отметим, что с 1990 года усеченный вариант
QuickBasic под названием QBasic был включен в состав MS-DOS. (Многие
современные пользователи ошибочно думают, что QuickBasic и QBasic — одно и то
же.)

Эпоха
Visual Basic

В
начале 90-х годов Microsoft начала активную борьбу за продвижение в массы своей
новой операционной системы Windows (против своей же, но более уже устаревающей
MS-DOS). Но, как известно, пользователи работают не с ОС, а с программами,
которые работают в нее среде. Поэтому скорость смены платформы в основном
определяется темпами появления соответствующих прикладных программ.

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

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

Действительно,
VB 1.0 в тот момент был больше похож не на рабочий инструмент, а на действующий
макет будущей среды разработки. Его принципиальное новшество заключалось в
реализации идей событийно-управляемого и визуального программирования в среде
Windows, которые весьма радикально отличались от классических схем разработки
программ. По общему признанию VB стал родоначальником нового поколения
инструментов, называемых сегодня средствами быстрой разработки программ (Rapid
Application Development, RAD). Сегодня эта идеология считает привычной, но
тогда она казалась совершенно необычной и создавала серьезные проблемы (в том
числе чисто психологического плана) для программистов «старых времен».

Тем не
менее, число VB-пользователей росло, причем во многом за счет огромной
популярности ее предшественника — QuickBasic. При этом VB быстро
«мужал», усиливаясь за счет, как развития среды программирования, так
и включения профессиональных элементов языка и проблемно-ориентированных
средств. И к моменту выпуска в 1995 году VB 4.0 эта система была уже признанным
и одним из самых распространенных инструментов создания широкого класса
приложений. В настоящее время используется версия VB 6.0, появление версии 7.0
ожидается в начале следующего года.

Visual
Basic for Applications

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

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

Первый
вариант VBA 1.0 появился в составе MS Office 4.0, но лишь в программах Excel
4.0 и Project 6.0. В других же приложениях — Word 6.0 и Access 2.0 — были
собственные варианты Basic. Более того, VBA 1.0 довольно сильно отличался
(причем имея ряд существенных преимуществ) от используемой тогда универсальной
системы VB 3.0.

Качественный
перелом наступил в конце 1996 года с выпуском MS Office 97, в котором была
реализована единая среда программирования VBA 5.0, включенная в программы Word,
Excel и PowerPoint. Более того, VBA 5.0 использовала тот же самый языковый
механизм и среду разработки, что и универсальная система VB 5.0. В состав
выпущенного год назад MS Office 2000 вошла соответственно версия VBA 6.0,
которая используется в шести программах — Word, Excel, PowerPoint, Access,
Outlook, Frontpage.

В
результате последние три года Microsoft позиционирует сегодня свой пакет MS Office
не просто как набор прикладных программ, а как комплексную платформу для
создания бизнес-приложений, решающих широкий круг специализированных задач
пользователей. Именно этим объясняется появлением в его составе специального
выпуска для разработчиков приложений — Developer Edition.

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

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

Десять
лет назад во всем мире было не более двух миллионов программистов. Сегодня их
насчитывается около десяти миллионов, из них не менее 70 процентов используют в
качестве хотя бы одно из инструментов VB или VBA.

Обработка модулей VBA

Проект – Файл приложения Microsoft Office, в котором написана программа VBA
Приложение – Приложение Microsoft Office (Word,
Excel, Access, Power Point и др.)
Модуль – Именованная
область в файле проекта содержащая в себе код, написанный на языке VBA
Окно проекта – “дерево”, содержащее на себе все “деревья” загруженных
проектов, “дерево” состоит из имен модулей.
Редактор VBA – редактор встроенный внутри приложения, позволяющий писать
и редактировать программы на языке VBA.

Для перехода в редактор VBA можно воспользоваться пунктами меню:
Сервис-Макросы-Редактор Visual Basic (Рис.1) (В Access выбрать закладку модулей
или форм, выбрать мышью нужный объект, зайти в меню: Вид-Программа)
Для открытия окна проекта, необходимо воспользоваться пунктами меню редактора
VBA: Вид-Дерево проекта
Двойным кликом мыши по папке с именами модулей можно открыть ее.
Двойным кликом мыши по имени модуля, можно активизировать окно редактора нужного
вам модуля.

Рис 1 Редактор VBA (слева дерево проекта, активизирован редактор модуля
1, который виден в правой части окна VBA)

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

Переименование, Удаление, Создание,
Добавление, Экспорт, Импорт модулей проекта

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

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

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

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

1. Экспортировать
модуль из проекта в файл (в редакторе VBA нажать правую клавишу мыши на дереве
проекта, на имени модуля, и выбрать пункт “Экспорт файла”)

2. Импортировать
модуль из файла в проект (данный файл может являться не только экспортируемым
файлом из VBA приложения, но и быть модулем обычного VB)

В редакторе VBA нажать правую
клавишу мыши на дереве проекта, на имени файла, и выбрать пункт “Экспорт файла”

.

Редакция модуля

1. В редакторе
VBA кликнуть в окне проекта два раза по имени нужного нам модуля (см. рис 1)( В
Access выбрать закладку Модули и имя соответствующего модуля, войти в меню
Вид-Программа.).

2. Перейти в
активизированное окно редактора модуля (справа от окна проекта) и редактировать
его.

3. Из верхнего
левого списка, расположенного вверху окна редактора модуля, можно выбирать либо
раздел описания, либо имя нужной вам подпрограммы (В модуле Форм, Листов Excel,
Книги Excel, Документа Word и т.п. из верхнего правого списка можно выбрать
Общую Область, либо имя объекта (Листа, Книги, Документа и т.п.), либо имя
элемента управления (который находится на соответствующем Листе, Книге,
Документе и т.п.), при выбранном объекте, из правого списка выбирается имя
события, для того, что бы активизировать соответствующую событийную процедуру
объекта или элемента управления).

Обработка модулей VBA программно

Под
“ИмяПроекта” в программной конструкции подразумевается соответствующий объект.
Для связи с книгой Excel предназначен объект — Workbooks(«Имя
книги»), а для связи с документом Word объект — Documents(“Имя
документа”). Объект для связи с документом, который содержит общие макросы
приложения Word, имеет имя: NormalTemplate, в Excel приложении данный объект
записывается следующим образом: Workbooks(«PERSONAL»).

Экспорт модуля проекта в файл

ИмяПроекта.VBProject.VBComponents.Item(«Имя модуля»).Export «Путь и ИмяФайла»

Импорт модуля проекта из файла

ИмяПроекта.VBProject.VBComponents.Import  «Путь и ИмяФайла»

Импорт модуля через
организатор(данный код только для Word приложения)

Application.OrganizerCopy Source:= _

“Путь и имя проекта, откуда берется модуль”, Destination:= _

“Путь и имя проекта куда импортируется модуль”, Name:=»Имя модуля», Object _

:=wdOrganizerObjectProjectItems

Вставка новых строк в модуль проекта

ИмяПроекта.VBProject.VBComponents.Item(«Имя модуля»).CodeModule.InsertLines  №, S

Где
— Номер строки в модуле, с которой будут вставляться новые строки
S – Вставляемая строка символов
Примечание:
В переменной S могут содержаться коды символов конца строк , которые можно
получить следующей функцией со следующим аргументом: CHR(13). Таким образом,
переменная S может содержать в себе сразу несколько строк:

   S = “Первая строка”+ chr(13)+”Вторая строка” + chr(13)+”Третья строка”  ‘и т.д.

Удаление строк из модуля

ИмяПроекта..VBProject.VBComponents.Item(«Имя модуля»).CodeModule.DeleteLines(№,Количество)

Где
— Номер строки в модуле с которой будут удаляться строки
Количество – количество удаляемых строк

Чтение строк из модуля

ИмяПроекта.VBProject.VBComponents.Item(«Имя модуля»).CodeModule.Lines(№,Количество)

Где
— Номер строки, в модуле с которой будут начинаться чтение строк
Количество – количество читаемых строк

Определение количества строк в
модуле

ИмяПроекта.VBProject.VBComponents.Item(«Имя модуля»).CodeModule.CountOfLines

Переименование модулей проекта

ИмяПроекта.VBProject.VBComponents.Item(“ИмяМодуля”).Name =”Новое имя модуля”

Удаление модулей проекта

ИмяПроекта.VBProject.VBComponents.Remove  _

ИмяПроекта.VBProject.VBComponents.Item(«ИмяМодуля»)

Определение количества модулей в
проекте

ИмяПроекта.VBProject.VBComponents.Count

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

‘Создаем новый модуль макросов и подпрограмм

ИмяПроекта.VBProject.VBComponents.Add vbext_ct_StdModule

‘Определяем индекс созданного модуля

k = ИмяПроекта.VBProject.VBComponents.Count

‘даем свое имя модулю

ИмяПроекта.VBProject.VBComponents.Item(k).Name = «Новое имя модуля»

Постановка задачи и ее решение

Вид объекта
Числовая прямоугольная матрица.

Параметры объекта
– Размерности матрицы

Входные формы – Ввод
элементов матрицы со столбцом (Клавиатура, Файл, Тест-формула), Выбор вида
обработки.

Виды обработки – Построение
диаграмм

1.  
Средние значения по строкам и столбцам

2.  
Максимальные значения по строкам и столбцам

3.  
Минимальные значения по строкам и столбцам

Option Explicit

Const m = 15

Dim i, j, k As Integer

Public Obr As Byte

Dim n, A(m, m), L(m) As Double

Public inp, NameF, Path As String

Dim Bukva As Variant

Dim det, s, x As Double

Public объявляет глобальную переменную. Объявлённая таким способом переменная
становится доступной из всех модулей и форм проекта. Если переменная объявлена
в разделе глобальных объявлений, то доступ к ней осуществляется просто по её
имени. Если же она объявлена в коде формы, то доступ к ней из других форм и
модулей осуществляется так: ИмяФормы. ИмяПеременной.

Sub ButtonCancel_Click()

    Sheet1.OptionButton1.Select

    Cng_List (False)

End Sub

Sub  объявляет процедуру с
именем name и параметрами arglist.

Public Sub Obrabotka()

Obr = Sheet1.ListBox1.ListIndex + 1

n = Sheet2.Range(«R2»)

If Obr > 0 Then

    Select Case Obr

        Case 1          ‘  Среднее значение по строкам

            Call rab1(n)

            Call
rab2(n)

        Case 3          ‘    min по строкам

            Call rab3(n)

        Case 4          ‘    min по столбцам

             Call rab4(n)

        Case 5          ‘     max по строкам

            Call rab5(n)

        Case 6          ‘     max по столбцам

            Call rab6(n)

    End Select

End If

End Sub

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

Call  — Вызывает процедуру или функцию. Оператор Call может
быть опущен.

Далее…

Sub ButtonOK_Click()

If Sheet1.OptionButton1.Value = True Then  

‘Ввод матрицы с клавиатуры в файл

Met1:

    inp = InputBox «Введите размерность матрицы А», «Ввод
размерности», «testfile»
— выводит окно с запросом на
ввод значения. Параметры такие же, как и у функции MsgBox.

  n = Val(inp)- Превращает строку в число

    If (n > 0)
And (n <= 15) And (n — Int(n) = 0) Then

        Sheet2.Visible = xlSheetVisible

        Sheet2.Activate

        Sheet2.Range(«L2») = Str(n) +
«*» + Str(n)

        Sheet2.Range(«R2») = n

        InitS

        Sheet2.Range(«H3») = «Введите элементы матрицы, начиная с активной ячейки
A4″

    Else

        If inp <> «»
Then

            MsgBox «Ошибка ввода
размерности»-
— Выводит на
экран окно сообщения (Message Box) которое будет ждать клика на одной из
кнопок. Возвращает число Integer, по которому можно определить какую кнопку
нажал пользователь.

                GoTo Met1- оператор для перехода на определённую метку

            End If

    End If

End If

If Sheet1.OptionButton2.Value = True Then

‘    Ввод матрицы из файла

    Open «C:file1» For Input
As #2
— открывает файл для чтения, записи или для
произвольного доступа.

    Input #2, n

    Sheet3.Visible = xlSheetVisible

    Sheet3.Activate

 ‘ Sheet3.Range(«M2») = Str(n) +
«*» + Str(n)

    Sheet3.Range(«R2») = n

    Call InitS – вызов функции InitS

    For i = 1 To n

        For j = 1 To n

            Input #2, A(i, j)

            Sheet3.Cells(i + 3, j) = A(i, j)

        Next j

    Next i

    Close #2 — Закрывает файл, открытый оператором Open под номером 2.

    MsgBox («Матрица А прочитана из
файла  «)

End If

If Sheet1.OptionButton3.Value = True Then

    ‘Заполнение тестового значения

    Randomize — Инициализирует генератор случайных чисел. Если этот оператор не
поместить перед функцией Rnd, то при каждом запуске приложения будут
генерироваться одни и те же случайные числа.

    For i = 1 To n

        For j = 1 To n

            A(i, j) = 20 * Rnd() — 10 — Возвращает Single значение, содержащее случайное число от 0 до 1.

        Next j

    Next i

    Sheet3.Cells(3, 2) = » Матрица
заполнена случайными тестовыми значениями «

     For i = 1 To n

        For j = 1 To n

            Sheet3.Cells(i + 3, j) = A(i, j)

        Next j

    Next i

End If

If Sheet1.OptionButton4.Value = True Then

    ‘Выбор обработки

        Call Obrabotka – вызываем функцию «обработка».

End If

End Sub

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

If Логическое_выражение
Then
Оператор

или сложнее

If
Логическое_выражение Then
Группа_операторов
End If

В первом случает оператор
может быть только один. Во втором сколько угодно (в том числе и один).

Далее…

Sub Cng_List(par As Boolean)

    If par Then ‘Активное

       
Sheet1.ListBox1.ForeColor = &H80000007

       
Sheet1.ListBox1.Enabled = True

    Else ‘Неактивное

       
Sheet1.ListBox1.ForeColor = &H80000013

       
Sheet1.ListBox1.Enabled = False

    End If

End Sub

ListBox1 – элемент управления,  префикс lst
(При именовании элементов управления рекомендуется следовать стандартным
соглашениям именования пользовательского интерфейса и элементов управления. Это
позволяет упростить чтение и отладку программного кода. В именах элементов
управления удобно проставлять префикс, однозначно указывающий на тип (класс)
этого объекта.)

Sub Init()

    Cng_List (False)

    n = 0

    For i = 1 To m

        For j = 1 To m

            A(i, j) = 0

        Next j

    Next i

    Sheet2.Visible =
xlSheetHidden

    Sheet3.Visible =
xlSheetHidden

End Sub

Sub InitS()

    For i = 1 To m + 2

        For j = 1 To m

           
ActiveSheet.Cells(i + 2, j) = «»

        Next j

    Next i

End Sub

Sub Button3_Click()         
‘   ОК

    n =
Sheet2.Range(«R2»)

    Open
«C:file1» For Output As #1

    Write #1, n

    For i = 1 To n

        For j = 1 To n

            If
Sheet2.Cells(i + 3, j) = «» Then

                A(i, j) = 0

            Else

                A(i, j) =
Sheet2.Cells(i + 3, j)

            End If

            Write #1, A(i, j)

        Next j

    Next i

    Close #1

    MsgBox («Матрица A записана в файл   file1»)

    Call InitS

    Sheet2.Visible =
xlSheetVisible

    Sheet1.Activate

    Call Init

End Sub

Sub Button4_Click() ‘   Отмена

    Sheet2.Visible =
xlSheetVisible

    Call InitS

    Sheet1.Activate

    Call Init

End Sub

Sub Button5_Click()

    Call InitS

    Sheet3.Visible =
xlSheetVisible

    Sheet1.Activate

End Sub

Sub
OutA()                          ‘   Вывод
результата на экран

    For i = 1 To n

        For j = 1 To n

            Sheet4.Cells(i +
3, j) = A(i, j)

        Next j

    Next i

    MsgBox

End Sub

Sub
getA()                        ‘  ввод матрицы  из файла

    For i = 1 To n

        For j = 1 To n

            If
Sheet3.Visible = xlSheetHidden Then

                MsgBox
(«Введите
матрицу А из файла«)

            Else

                If
Sheet3.Cells(i + 3, j) = «» Then

                    A(i, j) = 0         ‘          заполнение матрицы с
клавиатуры

                Else

                    A(i, j)
= Sheet3.Cells(i + 3, j)

                End If

            End If

        Next j

    Next i

End Sub

Создание кнопок ОК, ОТМЕНА, заполнение матрицы
в файл, а также вывод результатов на экран.

И, наконец, с помощью функции rab, мы проделываем все виды обработки.

Sub rab1(n As Variant)

    Call getA

    Sheet4.Activate

    Call InitS

    Sheet4.Range(«H3») =
«Среднее значение элементов по строкам»

    Sheet4.Range(«G4»)
= «Строка
«

    Sheet4.Range(«I4») = «Xcp»

    For i = 1 To n

        s = 0

        Sheet4.Cells(i + 4, 7) = i

        For j = 1 To n

            s = s + A(i, j)

        Next j

        s = s / n

        Sheet4.Cells(i + 4, 9) = s

    Next i

End Sub

Sub rab2(n As Variant)

    Call getA

    Sheet4.Activate

    Call InitS

    Sheet4.Range(«H3») =
«Среднее значение элементов по столбцу»

    Sheet4.Range(«G4»)
= «Столбец
«

    Sheet4.Range(«I4») = «Xcp»

    For j = 1 To n

        s = 0

        Sheet4.Cells(j + 4, 7) = j

        For i = 1 To n

            s = s + A(i, j)

        Next i

        s = s / n

        Sheet4.Cells(j + 4, 9) = s

    Next j

End Sub

Sub rab3(n As Variant)

    Call getA

    Sheet4.Activate

    Call InitS

    Sheet4.Range(«H3″) =
»  Min элементы в строках»

    Sheet4.Range(«G4»)
= «Строка
«

    Sheet4.Range(«I4») = «Min»

    For i = 1 To n

        x = A(i, 1) ‘min

        For j = 2 To n

            If x > A(i, j) Then

                x = A(i, j)

            End If

        Next j

        Sheet4.Cells(i + 4, 9) = x

    Next i

End Sub

Sub rab4(n As Variant)

    Call getA

    Sheet4.Activate

    Call InitS

    Sheet4.Range(«H3») =
«Min элементы по столбцам»

    Sheet4.Range(«G4»)
= «Столбец
«

    Sheet4.Range(«I4») = «Min»

    For j = 1 To n

        x = A(1, j) ‘min

        Sheet4.Cells(j + 4, 7) = j

        For i = 2 To n

            If x > A(i, j) Then

                x = A(i, j)

            End If

                    Next i

        Sheet4.Cells(j + 4, 9) = x

    Next j

End Sub

Sub rab5(n As Variant)

    Call getA

    Sheet4.Activate

    Call InitS

    Sheet4.Range(«H3») =
«Max элементы по строкам»

    Sheet4.Range(«G4»)
= «Строка
«

    Sheet4.Range(«H4») = «Max»

    For i = 1 To n

        s = A(i, 1) ‘max

        Sheet4.Cells(i + 4, 7) = i

        For j = 2 To n

            If s < A(i, j) Then

                s = A(i, j)

            End If

        Next j

        Sheet4.Cells(i + 4, 9) = s

    Next i

End Sub

Sub rab6(n As Variant)

    Call getA

    Sheet4.Activate

    Call InitS

    Sheet4.Range(«H3») =
«Max элементы по

столбцам»

    Sheet4.Range(«G4»)
= «Столбец
«

    Sheet4.Range(«H4») = «Max»

    For j = 1 To n

        s = A(1, j) ‘max

        Sheet4.Cells(j + 4, 7) = j

        For i = 2 To n

            If s < A(i, j) Then

                s = A(i, j)

            End If

        Next i

        Sheet4.Cells(j + 4, 9) = s

    Next j

Список использованной литературы

  • А.Васильев,
    А.Андреев. VBA в Office 2000.
    Учебный курс. С-Пб.: «Питер»,
    2001
  • Биллиг В.А.
    Средства разработки VBA-программиста. Офисное программирование. Том 1.
    М.:
    Издательско-торговый дом «Русская Редакция», 2001
    .
  • Биллиг В.А.
    Мир объектов Excel 2000.
    М.: Издательско-торговый дом «Русская
    Редакция», 2001.
  • В.И.Король. Visual Basic 6.0, Visual Basic for
    Applications 6.0.
    Язык
    программирования. Справочник с примерами.
    М.: Издательство КУДИЦ,
    2000.

Понравилась статья? Поделить с друзьями:
  • Excel vba копировать с листа на лист
  • Excel vba копировать лист в новую книгу
  • Excel vba копировать книгу в новую книгу
  • Excel vba копировать значение ячейки
  • Excel vba копировать в буфер обмена