Объектно-ориентированное программирование на VBA в среде Excel

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

Московский Государственный Университет

Дизайна и Технологии



















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

на тему:

«Объектно-ориентированное программирование

на VBA в среде Excel»



Вариант №3









Выполнила:

студентка группы ЭЭ-073 

Воробьева А.А.

Проверила: 

Мокринская Е.В.





















Москва 2008

Содержание:



 Теоретическая часть……………………………………………………………3

   Введение………………………………………………………………………....3

   1.Переменные и константы……………………………………………………..4

   2.Структура проекта VBA и автоматизация программирования…………….4

   3.Объект Range……………………………………………………………….....5

   4.Свойство Cells………………………………………………………………....6

   5.Операторы организации циклов…………………………………………..….6

   6.Процедуры и встроенные функции организации диалога………………….7

   7.Визуальные элементы управления. Экранная форма пользователя……….8



 Практическая часть…………………………………………………………...10

   1. Задание………………………………………………………………………10

   2. Вид формы UserForm1……………………………………………...............10

   3. Вид формы UserForm2……………………………………………………...11

   4. «Макрос1»…………………………………………………………………...11

   5. Кнопка «Шапка таблицы»………………………………………………….15

   6. Кнопка «Ввод исходных данных»…………………………………………16

   7. Кнопка «Расчет»…………………………………………………………….16

   8. Кнопка «Добавить» ………………………………………………………...16

   9. Кнопка «Очистить»…………………………………………………………17

   10.Кнопка «Итого»…………………………………………………………….17

   11.Кнопка «Выход»……………………………………………………………18



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









































Теоретическая часть.



Введение

Программирование в Excel, в основном, сводится к управлению объектами. Эта задача выполняется с помощью инструкций, введённых на языке, понятном Excel. Язык программирования VBA(Visual Basic for Application) является составной частью всех последних версий приложений MS Office (Word, Excel и т.д.) и предназначен для создания дополнительных решений не выходя из среды этого приложения. Первая версия VBA появилась как упрощенное подмножество более раннего языка Microsoft Visual Basic(VB). Однако по мере развития VB и VBA фирма – разработчик этих языков  Microsoft практически их объединила. 

Но многие опытные программисты не воспринимают идею программирования на Basic всерьёз. Само название (Beginner’s All-purpose Symbolic Instruction Code – универсальный символический язык инструкций для начинающих) предполагает, что это не профессиональный язык. Действительно, Basic был разработан профессорами Дартмутского университета Дж. Кенеми и Т. Куртцом в 1963 году и задумывался как наглядное средство преподавания методов программирования студентам колледжей. Basic довольно быстро приобрёл большую популярность, и сейчас поддерживается во многих типах компьютеров. Basic первого поколения применялся в 70-е годы в основном на мини- и микро-ЭВМ. Так в 1975 году Билл Гейтс и Пол Аллен, основатели и в тот момент единственные сотрудники новой компании MicroSoft, разработали  Basic-интерпретатор для микроЭВМ Altair 8800.

Развитие систем программирования на основе Basic второго поколения началось с появлением в начале 80-х годов персональных компьютеров. В конце 80-х насчитывалось около десятка Basic-систем различных фирм-разработчиков. С 1989 года этим языком стала заниматься только компания MicroSoft. Basic стал намного популярнее в 1991 году, когда компания MicroSoft выпустила Visual Basic третьего поколения для Windows. Этот продукт облегчил массовую разработку самостоятельных приложений для Windows. В 1995 году компания MicroSoft значительно расширила возможности пакета Office за счёт доступа к объектным моделям приложений. С этих пор язык VBA, поддерживающий спецификацию COM (Сomponent Object Model),позволяет пользователю легко и понятно манипулировать объектами приложений. Применительно к среде Excel такими объектами являются рабочие листы, диапазоны, ячейки и т.д.

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







1. Переменные и константы



Хороший стиль программирования предполагает объявление имён переменных и констант в самом начале текста программы. Переменная – именованная область оперативной памяти, отведённая для временного хранения данных, значение которых можно менять в процессе выполнения программы. Способ объявления переменной предполагает задания её имени и ключевого слова типа по схеме: Static/Public/Private/Dim Имя Переменной1(Имя Переменной2…) As Тип. Dim или одно из других перечисленных – ключевое слово объявления переменной и выделения области оперативной памяти для хранения её значений. As - ключевое слово, предшествующее объявлению типа переменной. Другой способ объявления переменной имеет следующий синтаксис: Static/Public/Private/Dim Имя Переменной1Суффикс (Имя Переменной2…). В данном случае тип переменной определяется символом-суффиксом, который записывается в конце имени. Некоторые типы данных VBA:

Byte – короткое число, от 0 до 255;

Integer – целые числа, от -32768 до 32767;

Single – вещественные (дробные) числа обычной точности, от -3,402823Е38 до -1,401298Е-45 для отрицательных и от 1,401298Е-45 до 3,402823Е38 для положительных значений;

String – строка символов переменной длины, от 0 до приблизительно 2 млрд. символов.

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

	Константа - именованная область оперативной памяти, отведённая для хранения данных, сохраняющих постоянное значение в течение выполнения программ. Их значение нельзя изменять. Объявление константы производится по следующей схеме: (Public/Private) Const Имя Константы As Тип = Значение.



2. Структура проекта VBA и автоматизация программирования



Отличительной особенностью VBA является то, что для разработки итогового документа он предоставляет возможность непосредственной работы с любыми объектами MS Office. Программа в объектно-ориентированной среде представляет собой сложную иерархическую структуру, называемую проектом, который может включать в себя модули, формы и объекты приложения. Модуль – это именованная программная единица, состоящая из раздела объявлений модуля и процедур. В разделе описаний модуля объявляются переменные и константы. Различают 2 основных типа модулей – стандартные и модули объектов. Стандартные модули могут содержать программные коды доступных для всего проекта процедур и функций. В модулях класса содержится описание нового объекта. Новый объект создаётся при создании нового экземпляра класса. Модуль форм является модулем объекта и содержит процедуры обработки событий формы пользователя и размещённых на ней элементов управления. Листы рабочей книги Excel так же являются объектами, на которых могут размещаться визуальные элементы управления. Каждый рабочий лист связан с отдельным модулем рабочего листа, в которых записываются процедуры обработки событий листов и размещённых на них элементов управления. Для каждого рабочего листа автоматически создаётся свой модуль.

Приложение Excel предоставляет пользователю возможность автоматизировать программирование любой последовательности действий и при этом не требует от него знания программирования. Такая программа называется макрос. Макрос – процедура, записанная на языке VBA, в которой запрограммировано выполнение действий пользователя. Макрос создаётся с помощью предназначенной для этой цели специальной программы – «Макрорекодер» - средство автоматизации программирования действий пользователя. Макрос имеет структуру процедуры Sub...End Sub. Он записывается средствами приложения Excel и запускать его на выполнение лучше из Excel, не прибегая к помощи редактора VBE. 



3.Объект Range



Объект Range используется в программном коде VBA наиболее часто и он позволяет работать как с отдельными ячейками, так и диапазонами  - строками, столбцами и двухмерными областями. Доступ и работу с ячейками объект осуществляет с помощью своих свойств и методов. Свойства этого объекта следующие: Name – возвращает имя диапазона; Value – возвращает значение ячейки или диапазона; RowHeight – возвращает высоту строки; ColumnWidth – возвращает ширину столбца; Font – возвращает объект Font (Шрифт); Formula – возвращает формулу в формате А1; FormulaR1C1 – возвращает формулу в формате R1C1. Методы можно разделить на 2 большие группы – методы, относящиеся к объекту, и методы, реализующие некоторые команды Excel. Упрощённый формат ссылки на ячейку имеет следующий синтаксис: Range(Cell), где Cell – адрес ячейки. В данном варианте используется стандартная адресация ячеек типа столбец-строка и адрес, который может представлять собой ячейку, строку, столбец или диапазон ячеек, записывается в кавычках в виде строки символов.





4. Свойство Cells



Свойство Cells, как правило, используется для доступа к отдельно взятой ячейке, однако позволяет задавать и диапазоны. Основная идея применения этого способа в том, что программным путём подготавливаются значения переменных, которые затем применяются в качестве координат ячеек.  В свойстве Cells используется адресация ячеек типа строка-столбец, т.е. аналогично индексации элементов матрицы. В общем виде координаты ячейки в свойстве Cells можно записать так: Cells (i,j), где i – номер строки ячейки; j – номер столбца. Для формирования ссылки на диапазон ячеек возможно совместное использование свойств Cells и Range. Ссылки имеют следующий синтаксис: Range(Cells1, Cells2), где Cells1 – адрес левой верхней ячейки диапазона; Cells2 - адрес правой нижней ячейки диапазона. В данном варианте используется адресация ячеек типа строка-столбец, и адреса формируются с помощью свойства Cells. Такая ссылка позволяет программное формирование адресов ячеек. 



5. Операторы организации циклов



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

Различают 2 типа циклов:

- циклы со счётчиком – заданным числом повторений;

- циклы с условием – неопределённым числом повторений.

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

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

For Счётчик = Начальное значение To Конечное значение[Step Шаг]

[инструкции]

[Exit For]

[инструкции]

Next[Счётчик]

Инструкция For...Next содержит следующие элементы:

For – ключевое слово начала цикла; Счётчик – числовая переменная, используемая в качестве счётчика; Начальное значение – начальное значение переменной Счётчик циклов, которое может быть задано числовым значением, переменной или выражением; Конечное значение – конечное значение переменной Счётчик циклов; Step Шаг – необязательная фраза, используемая для задания числового значения шага, на которое изменяется счётчик при каждом выполнении тела цикла; инструкции – составляющие область цикла инструкции, которые выполняются заданное число раз; Exit For – инструкция досрочного выхода из цикла; Next – ключевое слово, завершающее оператор организации цикла.

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

-циклы с предусловием

-циклы с постусловием.

Организовать выполнение циклов неопределённое число раз возможно с помощью нескольких операторов. Один из них – Do...Loop, который имеет 4 модификации и организуется с помощью следующих конструкций: 1.Цикл с предусловием –

Do [While/Until условие]

[инструкции]

[Exit Do]

[инструкции]

Loop



2.Цикл с постусловием – 

Do

[инструкции]

[Exit Do]

[инструкции]

Loop[While/Until условие].

Оператор Do...Loop содержит следующие элементы: Do – ключевое слово начала цикла; While/Until – ключевое слово, определяющее условие повторения цикла; условие – выражение, формирующее условие выполнения цикла и возвращающее значение логического типа(True или False); инструкции - составляющие область цикла инструкции; Exit Do – инструкция альтернативного выхода из цикла; Loop – ключевое слово завершения оператора цикла.



6. Процедуры и встроенные функции организации диалога



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

[Static,Public,Private] Sub Имя Процедуры [(Список_Аргументов)]

[инструкции]

[Exit Sub]

[инструкции]

End Sub

Процедура пользователя содержит элементы: Sub – ключевое слово, соответствующее началу конструкции определения процедуры; Имя Процедуры – обязательный элемент, удовлетворяющий принятым в языке правилам формирования имён переменных; Список_Аргументов – список разделённых запятыми данных, передаваемых в процедуру или возвращаемых ею при вызове подпрограммы Sub; Exit Sub – инструкция немедленного выхода из процедуры Sub; инструкции – необязательный элемент, любая группа инструкций, выполняемых в процедуре Sub.

Для организации ввода и вывода информации в процедурах VBA применяются 2 стандартные диалоговые функции. Одна из них – InputBox создаёт окно ввода данных, вторая – MsgBox формирует достаточно мощное окно сообщений. В данной работе использовалась функция InputBox, которая выводит на экран диалоговое окно, содержащее сообщение, текстовое поле ввода информации пользователя и 2 управляющие кнопки. При этом прерывается выполнение работающей процедуры и устанавливается режим ожидания ввода текста пользователем или нажатия одной из кнопок. Синтаксис этой функции: InputBox(сообщение[,заголовок] [, текст_по_умолчанию]), где сообщение – текст в диалоговом окне; заголовок – строковое выражение, отображаемое в строке заголовка диалогового окна; текст_по_умолчанию - строковое выражение, отображаемое в поле ввода в момент вывода окна на экран.



7. Визуальные элементы управления. Экранная форма пользователя



Визуальные элементы управления впервые были применены в первой версии Visual Basic, созданной фирмой Microsoft в 1991 году. Они значительно упростили программирование интерфейса прикладной программы, работающей в новой для того времени операционной среде Windows. Элемент управления – объект, помещаемый пользователем в форму или на рабочий лист и имеющий собственный набор распознаваемых свойств, методов и событий. Размещение элементов управления в форме пользователя осуществляется при помощи панели инструментов VBA “Toolbox”, которая появляется на экране при вставке формы. Среди множества элементов управления наиболее часто используются три – «Командная кнопка» (CommandButton), «Текстовое поле» (TextBox) и «Надпись» (Label). Элемент «Командная кнопка» (CommandButton) всегда связан с процедурой обработки событий. Элемент «Текстовое поле» (TextBox) используется для ввода информации в программу или вывода сообщений. Элемент «Надпись» (Label) применяется только для вывода различных текстов в форме, а также рисунков. Элементы управления начинают работать и реагировать на действия пользователя только после того, как они помещены на рабочий лист или форму пользователя.

Для разработки более удобных и разнообразных окон пользователя применяется объект «Форма» (UserForm). Форма – это окно, конструируемое пользователем. Объект UserForm представляет собой диалоговое окно, являющееся составной частью интерфейса пользователя в приложении. Для того чтобы вставить форму в проект нужно использовать вставку «UserForm» из меню «Вставка». Формам пользователя присущи также и методы, которые позволяют воздействовать на неё. Например, Load – загружает форму пользователя в оперативную память, но не отображает её на экране; Unload – удаляет форму из памяти; Show – отображает на экране форму пользователя. Программирование работы с формами пользователя заключается в написании процедур реакции на различные события, которые могут произойти при работе пользователя с формой. При создании объекта UserForm VBA система автоматически создаёт связанный с ним модуль. В этом модуле размещаются процедуры обработки событий Формы и размещённых в ней элементов управления. В общем случае заготовка процедуры обработки события имеет синтаксис: 

Private Sub Объект управления _Событие()

End Sub

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

















 





Практическая часть:



1. Задание: 

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

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

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

		Процедуру построчной записи считанной информации в таблицу.

		Процедуру расчёта незаполненных столбцов таблицы на основе известных данных строк.

		Вспомогательную процедуру очистки таблицы.



Исходная таблица:

«Список товаров, подготовленных к продаже. Ожидаемая выручка»



Номенк. Номер

Наименов. Товара

Еден. Изм.

Цена за ед.,руб.

Кол-во

Сумма, руб.

Налог (20%)

Всего, руб.

13675

Шапки

шт.

788,00

64

 

 

60518,40

3816

Пальто

шт.

1435,80

42

 

 

72364,32

13855

Платки

шт.

194,35

86

 

 

20056,92

3843

Рубашки

шт.

220,75

110

 

 

29139,00

3811

Куртки

шт.

984,40

38

 

 

44888,64

13868

Костюмы

шт.

1495,00

40

 

 

71760,00

 

 

 

 

 

 

Итого

298727,3





2. Вид формы UserForm1:











3. Вид формы UserForm2: 













4.  «Макрос1»



Sub Макрос1()

' Макрос1 Макрос

' Макрос записан 25.11.2008 (User)

    Range("A1:H1").Select

    With Selection

        .HorizontalAlignment = xlGeneral

        .VerticalAlignment = xlBottom

        .WrapText = False

        .Orientation = 0

        .AddIndent = False

        .IndentLevel = 0

        .ShrinkToFit = False

        .ReadingOrder = xlContext

        .MergeCells = True

    End With

    Selection.Font.Bold = True

    With Selection

        .HorizontalAlignment = xlCenter

        .VerticalAlignment = xlBottom

        .WrapText = False

        .Orientation = 0

        .AddIndent = False

        .IndentLevel = 0

        .ShrinkToFit = False

        .ReadingOrder = xlContext

        .MergeCells = True

    End With

    Range("A1:H1").Select

    ActiveCell.FormulaR1C1 = _

        "Список товаров, подготовленных к продаже. Охидаемая выручка"

    Range("A3:H3").Select

    With Selection

        .HorizontalAlignment = xlGeneral

        .VerticalAlignment = xlBottom

        .WrapText = True

        .Orientation = 0

        .AddIndent = False

        .IndentLevel = 0

        .ShrinkToFit = False

        .ReadingOrder = xlContext

        .MergeCells = False

    End With

    Range("A3").Select

    ActiveCell.FormulaR1C1 = "Номенк. Номер"

    With ActiveCell.Characters(Start:=1, Length:=13).Font

        .Name = "Arial Cyr"

        .FontStyle = "обычный"

        .Size = 10

        .Strikethrough = False

        .Superscript = False

        .Subscript = False

        .OutlineFont = False

        .Shadow = False

        .Underline = xlUnderlineStyleNone

        .ColorIndex = xlAutomatic

    End With

    Range("B3").Select

    ActiveCell.FormulaR1C1 = "Наименов. Товара"

    With ActiveCell.Characters(Start:=1, Length:=16).Font

        .Name = "Arial Cyr"

        .FontStyle = "обычный"

        .Size = 10

        .Strikethrough = False

        .Superscript = False

        .Subscript = False

        .OutlineFont = False

        .Shadow = False

        .Underline = xlUnderlineStyleNone

        .ColorIndex = xlAutomatic

    End With

    Range("C3").Select

    ActiveCell.FormulaR1C1 = "Еден. Изм."

    With ActiveCell.Characters(Start:=1, Length:=10).Font

        .Name = "Arial Cyr"

        .FontStyle = "обычный"

        .Size = 10

        .Strikethrough = False

        .Superscript = False

        .Subscript = False

        .OutlineFont = False

        .Shadow = False

        .Underline = xlUnderlineStyleNone

        .ColorIndex = xlAutomatic

    End With

    Range("D3").Select

    ActiveCell.FormulaR1C1 = "Цена за ед.,руб."

    With ActiveCell.Characters(Start:=1, Length:=16).Font

        .Name = "Arial Cyr"

        .FontStyle = "обычный"

        .Size = 10

        .Strikethrough = False

        .Superscript = False

        .Subscript = False

        .OutlineFont = False

        .Shadow = False

        .Underline = xlUnderlineStyleNone

        .ColorIndex = xlAutomatic

    End With

    Range("E3").Select

    ActiveCell.FormulaR1C1 = "Кол-во"

    With ActiveCell.Characters(Start:=1, Length:=6).Font

        .Name = "Arial Cyr"

        .FontStyle = "обычный"

        .Size = 10

        .Strikethrough = False

        .Superscript = False

        .Subscript = False

        .OutlineFont = False

        .Shadow = False

        .Underline = xlUnderlineStyleNone

        .ColorIndex = xlAutomatic

    End With

    Range("F3").Select

    ActiveCell.FormulaR1C1 = "Сумма, руб."

    With ActiveCell.Characters(Start:=1, Length:=11).Font

        .Name = "Arial Cyr"

        .FontStyle = "обычный"

        .Size = 10

        .Strikethrough = False

        .Superscript = False

        .Subscript = False

        .OutlineFont = False

        .Shadow = False

        .Underline = xlUnderlineStyleNone

        .ColorIndex = xlAutomatic

    End With

    Range("G3").Select

    ActiveCell.FormulaR1C1 = "Налог (20%)"

    With ActiveCell.Characters(Start:=1, Length:=10).Font

        .Name = "Arial Cyr"

        .FontStyle = "обычный"

        .Size = 10

        .Strikethrough = False

        .Superscript = False

        .Subscript = False

        .OutlineFont = False

        .Shadow = False

        .Underline = xlUnderlineStyleNone

        .ColorIndex = xlAutomatic

    End With

    Range("H3").Select

    ActiveCell.FormulaR1C1 = "Всего, руб."

    With ActiveCell.Characters(Start:=1, Length:=11).Font

        .Name = "Arial Cyr"

        .FontStyle = "обычный"

        .Size = 10

        .Strikethrough = False

        .Superscript = False

        .Subscript = False

        .OutlineFont = False

        .Shadow = False

        .Underline = xlUnderlineStyleNone

        .ColorIndex = xlAutomatic

    End With

    Range("A3:H3").Select

    Selection.Borders(xlDiagonalDown).LineStyle = xlNone

    Selection.Borders(xlDiagonalUp).LineStyle = xlNone

    With Selection.Borders(xlEdgeLeft)

        .LineStyle = xlContinuous

        .Weight = xlMedium

        .ColorIndex = xlAutomatic

    End With

    With Selection.Borders(xlEdgeTop)

        .LineStyle = xlContinuous

        .Weight = xlMedium

        .ColorIndex = xlAutomatic

    End With

    With Selection.Borders(xlEdgeBottom)

        .LineStyle = xlContinuous

        .Weight = xlMedium

        .ColorIndex = xlAutomatic

    End With

    With Selection.Borders(xlEdgeRight)

        .LineStyle = xlContinuous

        .Weight = xlMedium

        .ColorIndex = xlAutomatic

    End With

    With Selection.Borders(xlInsideVertical)

        .LineStyle = xlContinuous

        .Weight = xlMedium

        .ColorIndex = xlAutomatic

    End With

    Selection.Font.Bold = True

    Columns("B:B").ColumnWidth = 10.43

End Sub



Sub Кнопка1_Щелкнуть()

Load UserForm1

UserForm1.Show

End Sub







5. Кнопка «Шапка таблицы»



Private Sub CommandButton1_Click()

Call Макрос1

End Sub



6. Кнопка «Ввод исходных данных»



Private Sub CommandButton2_Click()

Load UserForm2

UserForm2.Show

End Sub



7. Кнопка «Расчет »



Private Sub CommandButton3_Click()

Dim N, I As Integer

N = 0

Do While Cells(4 + N, 1) <> ""

N = N + 1

A = Cells(3 + N, 4)

B = Cells(3 + N, 5)

C = A * B

Cells(N + 3, 6) = Str(C)

D = C * 0.2

Cells(N + 3, 7) = Str(D)

F = C + D

Cells(N + 3, 8) = Str(F)

Loop

End Sub



8. Кнопка «Добавить»



Private Sub CommandButton4_Click()

Dim I, N, J As Integer

Dim A, B, C As String

Dim F As Single

Dim D As Single

I = 0

Do While Cells(I + 3, 1) <> ""

I = I + 1

Loop

Range(Cells(I + 3, 1), Cells(I + 3, 8)).Clear

J = InputBox("Введите номер строки добавляемой записи")

N = J + 1

Do While I < N

A = InputBox("Номенклатурный номер")

B = InputBox("Наименование товара")

C = InputBox("Еденица измерения")

D = Val(InputBox("Цена за еденицу"))

F = Val(InputBox("Количество"))

Cells(3 + I, 1).Value = A

Cells(3 + I, 2).Value = B

Cells(3 + I, 3).Value = C

Cells(3 + I, 4).Value = D

Cells(3 + I, 5).Value = F

I = I + 1

Loop

End Sub



9. Кнопка «Очистить» 



Private Sub CommandButton5_Click()

Dim I, N As Integer

N = 0

Do While Cells(3 + N, 7) <> ""

N = N + 1

Loop

For I = 1 To N

Cells(I + 3, 1).Clear

Cells(I + 3, 2).Clear

Cells(I + 3, 3).Clear

Cells(I + 3, 4).Clear

Cells(I + 3, 5).Clear

Cells(I + 3, 6).Clear

Cells(I + 3, 7).Clear

Cells(I + 3, 8).Clear

Next I

End Sub







10. Кнопка «Итого»



Private Sub CommandButton6_Click()

Dim N%

Dim I%

Dim SG!

Dim G!(20)

N = 0

Do While Cells(N + 4, 7) <> ""

N = N + 1

Loop

For I = 1 To N

G(I) = Cells(I + 3, 8).Value

Next I

SG = 0

For I = 1 To N

SG = SG + G(I)

Next I

Cells(N + 4, 7).Value = "Итого"

Cells(N + 4, 8).Value = SG

 

11. Кнопка «Выход» 



Private Sub CommandButton7_Click()

End

End Sub







Итоговая таблица:



Номенк. Номер

Наименов. Товара

Еден. Изм.

Цена за ед.,руб.

Кол-во

Сумма, руб.

Налог (20%)

Всего, руб.

13675

Шапки

шт.

788,00

64

50432,00

10086,40

60518,40

3816

Пальто

шт.

1435,80

42

60303,60

12060,72

72364,32

13855

Платки

шт.

194,35

86

16714,10

3342,82

20056,92

3843

Рубашки

шт.

220,75

110

24282,50

4856,50

29139,00

3811

Куртки

шт.

984,40

38

37407,20

7481,44

44888,64

13868

Костюмы

шт.

1495,00

40

59800,00

11960,00

71760,00

 

 

 

 

 

 

Итого

298727,28































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



1. Джон Уокенбах. Профессиональное программирование на VBA в Excel. Диалектика. М., С-Пб., Киев, 2003.

2. Г.В.Росляков. Программирование на VBA для Excel: Учеб. пособие. МГУДТ, 2006.

3. П.П. Мельников, И. В. Миронова, И. Ю. Шполянская. Практикум по экономической информатике. Часть III. Изд. «Перспектива», Москва 2002.



















10