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

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

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

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

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

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

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

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

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

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

Иркутск, 2004

План

1.<span Times New Roman"">  

Как все начиналось<span Times New Roman",«serif»; mso-ansi-language:EN-US">- QuickBasic <span Times New Roman",«serif»">против<span Times New Roman",«serif»;mso-ansi-language: EN-US"> TurboBasic<span Times New Roman",«serif»; mso-ansi-language:EN-US"> -<span Times New Roman",«serif»">Эпоха<span Times New Roman",«serif»; mso-ansi-language:EN-US"> Visual Basic<span Times New Roman",«serif»; mso-ansi-language:EN-US"> <span Times New Roman",«serif»">-<span Times New Roman",«serif»; mso-ansi-language:EN-US">Visual Basic for Applications<span Times New Roman",«serif»;color:windowtext">2. <span Times New Roman",«serif»;color:windowtext">Обработкамодулей VBA <span Times New Roman",«serif»;color:windowtext">-Переименование,Удаление, Создание, Добавление, Экспорт, Импорт модулей проекта<span Times New Roman",«serif»;color:windowtext">- Импорт и экспортмодуля из проекта в проект<span Times New Roman",«serif»;color:windowtext">- Импорт модуля черезэкспортируемый файл (а также модулей обычного VB)<span Times New Roman",«serif»;color:windowtext">- Редакция модуля<span Times New Roman",«serif»;color:windowtext">- Обработка модулей VBAпрограммно<span Times New Roman",«serif»;color:windowtext">- Экспорт модуляпроекта в файл<span Times New Roman",«serif»;color:windowtext">- Импорт модуля проектаиз файла<span Times New Roman",«serif»;color:windowtext">- Импорт модуля черезорганизатор (данный код только для Word приложения)<span Times New Roman",«serif»;color:windowtext">- Вставка новых строк вмодуль проекта<span Times New Roman",«serif»;color:windowtext">- Удаление строк измодуля<span Times New Roman",«serif»;color:windowtext">-  Чтение строк из модуля<span Times New Roman",«serif»;color:windowtext">- Определениеколичества строк в модуле<span Times New Roman",«serif»;color:windowtext">- Переименованиемодулей проекта<span Times New Roman",«serif»;color:windowtext">- Удаление модулейпроекта<span Times New Roman",«serif»;color:windowtext">- Определениеколичества модулей в проекте<span Times New Roman",«serif»;color:windowtext">- Создание новогомодуля проекта

<span Verdana",«sans-serif»">

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

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

<span Times New Roman",«serif»; font-weight:normal;mso-bidi-font-weight:bold">

                       

<span Verdana",«sans-serif»">Каквсе начиналось

<span Verdana",«sans-serif»;color:black">ЯзыкBasic был разработан профессорами Дартмутского колледжа Дж.Кемени и Т.Курцом в1965 году как средство обучения и работы непрофессиональных программистов.(Дартмутский колледж в штате Нью-Гампшир, США, был создан в середине 18 века,это одно из старейший высших заведений Америки). Его назначение определено всамом названии, которое является аббревиатурой слов Beginner's All-purposeSymbolic Instruction Code (многоцелевой язык символических инструкций дляначинающих) и при этом в дословном переводе означает «базовый».

<span Verdana",«sans-serif»; color:black">Примечание.

<span Verdana",«sans-serif»;color:black"> Раньше языки программированияписались обязательно строчными буквами — BASIC, FORTRAN. В 1990 годуМеждународная организация стандартов приняла решения, что они пишутся какобычные имена собственные — строчной является только первая буква.<span Verdana",«sans-serif»;color:black">

<span Verdana",«sans-serif»;color:black">Однакопарадокс заключается в том, что, будучи действительно весьма простым средствомпрограммирования, совершенно непригодным в те времена для решения серьезныхзадач, Basic представлял собой качественно новую технологию создания программ врежиме интерактивного диалога между разработчиком и компьютером. То естьпредставлял собой прообраз современных систем программирования. Другое дело,что решение подобной задачи на технике тех лет было возможно только за счетмаксимального упрощения языка программирования и использования транслятора типа«интерпретатор».

<span Verdana",«sans-serif»;color:black">Всилу этих же причин Basic в основном применялся на мини — и микроЭВМ, которые в70-е годы имели оперативную память, объем которой кажется сегодня простонереальным (4-32 тысяч байт). Резкое развитие систем на основе Basic началось споявлением в начале 80-х годов персональных компьютеров, производительность ипопулярность которых растет вот уже двадцать лет невиданными темпами.

<span Verdana",«sans-serif»; font-style:normal;mso-bidi-font-style:italic">QuickBasic против TurboBasic

<span Verdana",«sans-serif»;color:black">Вконце 80-х годов насчитывалось около десятка систем Basic различныхфирм-разработчиков. Однако главная борьба шла между QuickBasic (компанияMicrosoft) и TurboBasic (Borland). Вообще-то, конкуренция между этими двумяразработчиками средств программирования шла по целому спектру языков — Basic,Pascal и C. И результатом ее в 1989 году стало неявное мировое соглашение,когда Microsoft отказалась от дальнейшей поддержки Pascal, а Borland — Basic.

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

<span Verdana",«sans-serif»;color:black">Однако,как мне представляется, победа QuickBasic определялась чисто технологическимипричинами — в этой системе была удачно реализована схема смешанногоиспользования традиционных Basic-технологий и классических методов созданиясложных программных систем. Отметим, что с 1990 года усеченный вариантQuickBasic под названием QBasic был включен в состав MS-DOS. (Многиесовременные пользователи ошибочно думают, что QuickBasic и QBasic — одно и тоже.)

<span Verdana",«sans-serif»; font-style:normal;mso-bidi-font-style:italic">Эпоха Visual Basic

<span Verdana",«sans-serif»;color:black">Вначале 90-х годов Microsoft начала активную борьбу за продвижение в массы своейновой операционной системы Windows (против своей же, но более уже устаревающейMS-DOS). Но, как известно, пользователи работают не с ОС, а с программами,которые работают в нее среде. Поэтому скорость смены платформы в основномопределяется темпами появления соответствующих прикладных программ.

<span Verdana",«sans-serif»;color:black">Однакосмена операционных систем представляет серьезную проблему и для программистов,так как им нужно было осваивать новую технологию разработки программ. В тотмомент бытующим (и в значительной степени, совершенно справедливым) мнениембыло то, что Windows предъявляет более высокие требования к квалификациипрограммиста.

<span Verdana",«sans-serif»;color:black">В1991 году под лозунгом «теперь и начинающие программисты могут легкосоздавать приложения для Windows» появилась первая версия новогоинструментального средства Microsoft Visual Basic. В тот момент Microsoftдостаточно скромно оценивала возможности этой системы, ориентируя ее, преждевсего, на категорию начинающих и непрофессиональных программистов. Основнойзадачей тогда было выпустить на рынок простой и удобный инструмент разработки втогда еще довольно новой среде Windows, программирование в которой представлялопроблему и для опытных специалистов.

<span Verdana",«sans-serif»;color:black">Действительно,VB 1.0 в тот момент был больше похож не на рабочий инструмент, а на действующиймакет будущей среды разработки. Его принципиальное новшество заключалось вреализации идей событийно-управляемого и визуального программирования в средеWindows, которые весьма радикально отличались от классических схем разработкипрограмм. По общему признанию VB стал родоначальником нового поколенияинструментов, называемых сегодня средствами быстрой разработки программ (RapidApplication Development, RAD). Сегодня эта идеология считает привычной, нотогда она казалась совершенно необычной и создавала серьезные проблемы (в томчисле чисто психологического плана) для программистов «старых времен».

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

<span Verdana",«sans-serif»; font-style:normal;mso-bidi-font-style:italic">Visual Basic for Applications

<span Verdana",«sans-serif»;color:black">Вначале 90-х годов наметилась отчетливая тенденция включение в приложения,предназначенные для конечного пользователя, средства внутреннегопрограммирования, которые должны были решать задачи настройки и адаптации этихпакетов для конкретных условий их применения.

<span Verdana",«sans-serif»;color:black">Вконце 1993 г. Microsoft объявила о намерении создать на основе VB новуюуниверсальную систему программирования для прикладных программ, котораяполучила название Visual Basic for Applications (VB для приложений).Естественно, реализацию этого проекта она начала с собственных офисных пакетов.

<span Verdana",«sans-serif»;color:black">Первыйвариант VBA 1.0 появился в составе MS Office 4.0, но лишь в программах Excel4.0 и Project 6.0. В других же приложениях — Word 6.0 и Access 2.0 — былисобственные варианты Basic. Более того, VBA 1.0 довольно сильно отличался(причем имея ряд существенных преимуществ) от используемой тогда универсальнойсистемы VB 3.0.

<span Verdana",«sans-serif»;color:black">Качественныйперелом наступил в конце 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.

<span Verdana",«sans-serif»;color:black">Врезультате последние три года Microsoft позиционирует сегодня свой пакет MS Officeне просто как набор прикладных программ, а как комплексную платформу длясоздания бизнес-приложений, решающих широкий круг специализированных задачпользователей. Именно этим объясняется появлением в его составе специальноговыпуска для разработчиков приложений — Developer Edition.

<span Verdana",«sans-serif»;color:black">Одновременно,VBA активно продвигает в качестве отраслевого стандарта для управленияпрограммируемыми приложениями, объявив о возможности его лицензирования.Сегодня уже более ста ведущих мировых фирм-разработчиков прикладных программ(среди них есть о российские) приобрели лицензии на него и включают VBA всостав своих программных продуктов.

<span Verdana",«sans-serif»;color:black">Выводиз сказанного выше. Освоение механизма программирования VBA, реализованного вофисном приложении, которое установлено на вашем компьютере, откроет вамвозможность использования полученных знаний и навыков при работе с десятками исотнями других программ, в том числе и тех, которых пока еще нет на свете.Начав с составления простейших макрокоманд, при желании можно в рамках одногоинструментария стать профессионалом, разрабатывающим программные системы любойсложности.

<span Verdana",«sans-serif»;color:black">Десятьлет назад во всем мире было не более двух миллионов программистов. Сегодня ихнасчитывается около десяти миллионов, из них не менее 70 процентов используют вкачестве хотя бы одно из инструментов VB или VBA.

<span Verdana",«sans-serif»; color:black;mso-ansi-language:EN-US">

<span Verdana",«sans-serif»;color:black;mso-ansi-language:EN-US">

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

<span Verdana",«sans-serif»; color:#333333">Проект

<span Verdana",«sans-serif»;color:#333333;mso-ansi-language:EN-US"> – <span Verdana",«sans-serif»;color:#333333">Файл<span Verdana",«sans-serif»;color:#333333; mso-ansi-language:EN-US"> <span Verdana",«sans-serif»; color:#333333">приложения<span Verdana",«sans-serif»; color:#333333;mso-ansi-language:EN-US"> Microsoft Office, <span Verdana",«sans-serif»;color:#333333">в<span Verdana",«sans-serif»;color:#333333; mso-ansi-language:EN-US"> <span Verdana",«sans-serif»; color:#333333">котором<span Verdana",«sans-serif»; color:#333333;mso-ansi-language:EN-US"> <span Verdana",«sans-serif»;color:#333333">написана<span Verdana",«sans-serif»;color:#333333; mso-ansi-language:EN-US"> <span Verdana",«sans-serif»; color:#333333">программа<span Verdana",«sans-serif»; color:#333333;mso-ansi-language:EN-US"> VBA
<span Verdana",«sans-serif»; color:#333333">Приложение<span Verdana",«sans-serif»;color:#333333;mso-ansi-language:EN-US"> – <span Verdana",«sans-serif»;color:#333333">Приложение<span Verdana",«sans-serif»;color:#333333; mso-ansi-language:EN-US"> Microsoft Office (Word, Excel, Access,Power Point <span Verdana",«sans-serif»; color:#333333">и<span Verdana",«sans-serif»; color:#333333;mso-ansi-language:EN-US"> <span Verdana",«sans-serif»;color:#333333">др<span Verdana",«sans-serif»;color:#333333; mso-ansi-language:EN-US">.)
<span Verdana",«sans-serif»; color:#333333">Модуль<span Verdana",«sans-serif»; color:#333333"> – Именованная область в файле проекта содержащая в себе код,написанный на языке VBA
Окно проекта – “дерево”, содержащее на себе все “деревья” загруженныхпроектов, “дерево” состоит из имен модулей.
Редактор VBA – редактор встроенный внутри приложения, позволяющий писатьи редактировать программы на языке VBA.

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

<span Verdana",«sans-serif»;color:#333333"><img src="/cache/referats/17365/image002.jpg" v:shapes="_x0000_i1025">
Рис 1 Редактор VBA (слева дерево проекта, активизирован редактор модуля1, который виден в правой части окна VBA)

<span Verdana",«sans-serif»;color:#333333">
Примечание: В Access модули можно обрабатывать, не заходя в редактор VBA,выбрав закладку Модули. В Access 1997 модули обрабатываются только череззакладку Модули, т.к. окна проекта в этой версии Access не существует.

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

<span Verdana",«sans-serif»;color:#333333">Всеуказанные в заголовке действия можно выполнить следующим образом:

<span Verdana",«sans-serif»;mso-fareast-font-family: Verdana;mso-bidi-font-family:Verdana;color:#333333">1.<span Times New Roman"">    

<span Verdana",«sans-serif»;color:#333333">Вредакторе VBA нажать правую клавишу мыши на дереве проекта на имени нужного наммодуля (или на любом имени имеющегося модуля, для того, что бы создать новыймодуль)

<span Verdana",«sans-serif»;mso-fareast-font-family: Verdana;mso-bidi-font-family:Verdana;color:#333333">2.<span Times New Roman"">    

<span Verdana",«sans-serif»;color:#333333">Выбратьсоответствующий пункт меню (для создания модуля выбрать пункты:Вставить-модуль) Импорти экспорт модуля из проекта в проектИмпорт модуля через экспортируемый файл (атакже модулей обычного VB)

<span Verdana",«sans-serif»;color:#333333">Дляпересылки модуля из проекта в проект можно воспользоваться следующим приемом:

<span Verdana",«sans-serif»;mso-fareast-font-family: Verdana;mso-bidi-font-family:Verdana;color:#333333">1.<span Times New Roman"">    

<span Verdana",«sans-serif»;color:#333333">Экспортироватьмодуль из проекта в файл (в редакторе VBA нажать правую клавишу мыши на деревепроекта, на имени модуля, и выбрать пункт “Экспорт файла”)

<span Verdana",«sans-serif»;mso-fareast-font-family: Verdana;mso-bidi-font-family:Verdana;color:#333333">2.<span Times New Roman"">    

<span Verdana",«sans-serif»;color:#333333">Импортироватьмодуль из файла в проект (данный файл может являться не только экспортируемымфайлом из VBA приложения, но и быть модулем обычного VB)

<span Verdana",«sans-serif»">В редакторе VBA нажать правую клавишумыши на дереве проекта, на имени файла, и выбрать пункт “Экспорт файла”

<span Verdana",«sans-serif»;color:#333333">
. Редакция модуля

<span Verdana",«sans-serif»;mso-fareast-font-family: Verdana;mso-bidi-font-family:Verdana;color:#333333">1.<span Times New Roman"">    

<span Verdana",«sans-serif»;color:#333333">Вредакторе VBA кликнуть в окне проекта два раза по имени нужного нам модуля (см.рис 1)( В Access выбрать закладку Модули и имя соответствующего модуля, войти вменю Вид-Программа.).

<span Verdana",«sans-serif»;mso-fareast-font-family: Verdana;mso-bidi-font-family:Verdana;color:#333333">2.<span Times New Roman"">    

<span Verdana",«sans-serif»;color:#333333">Перейтив активизированное окно редактора модуля (справа от окна проекта) иредактировать его.

<span Verdana",«sans-serif»;mso-fareast-font-family: Verdana;mso-bidi-font-family:Verdana;color:#333333">3.<span Times New Roman"">    

<span Verdana",«sans-serif»;color:#333333">Изверхнего левого списка, расположенного вверху окна редактора модуля, можновыбирать либо раздел описания, либо имя нужной вам подпрограммы (В модуле Форм,Листов Excel, Книги Excel, Документа Word и т.п. из верхнего правого спискаможно выбрать Общую Область, либо имя объекта (Листа, Книги, Документа и т.п.),либо имя элемента управления (который находится на соответствующем Листе,Книге, Документе и т.п.), при выбранном объекте, из правого списка выбираетсяимя события, для того, что бы активизировать соответствующую событийнуюпроцедуру объекта или элемента управления). Обработка модулей VBA программно

<span Verdana",«sans-serif»;color:#333333">Под“ИмяПроекта” в программной конструкции подразумевается соответствующий объект.Для связи с книгой Excel предназначен объект — Workbooks(«Имякниги»), а для связи с документом Word объект — Documents(“Имядокумента”). Объект для связи с документом, который содержит общие макросыприложения Word, имеет имя: NormalTemplate, в Excel приложении данный объектзаписывается следующим образом: Workbooks(«PERSONAL»).

Экспорт модуля проекта в файл<span Verdana",«sans-serif»; color:#333333">ИмяПроекта.VBProject.VBComponents.Item(«Имя модуля»).Export «Путь и ИмяФайла»Импорт модуля проекта из файла<span Verdana",«sans-serif»; color:#333333">ИмяПроекта.VBProject.VBComponents.Import  «Путь и ИмяФайла»Импорт модуля через организатор(данный кодтолько для Word приложения)<span Verdana",«sans-serif»; color:#333333">Application.OrganizerCopy Source:= _<span Verdana",«sans-serif»;color:#333333"><span Verdana",«sans-serif»;color:#333333"> “Путь и имя проекта, откуда берется модуль”, Destination:= _<span Verdana",«sans-serif»;color:#333333"><span Verdana",«sans-serif»;color:#333333"> “Путь и имя проекта куда импортируется модуль”, Name:=«Имя модуля», Object _<span Verdana",«sans-serif»;color:#333333"><span Verdana",«sans-serif»;color:#333333"> :=wdOrganizerObjectProjectItemsВставка новых строк в модуль проекта<span Verdana",«sans-serif»; color:#333333">ИмяПроекта.VBProject.VBComponents.Item(«Имя модуля»).CodeModule.InsertLines  №, S

<span Verdana",«sans-serif»;color:#333333">Где
№ — Номер строки в модуле, с которой будут вставляться новые строки
S – Вставляемая строка символов
Примечание:
В переменной S могут содержаться коды символов конца строк, которые можнополучить следующей функцией со следующим аргументом: CHR(13). Таким образом,переменная S может содержать в себе сразу несколько строк:

<span Verdana",«sans-serif»; color:#333333">   S = “Первая строка”+ chr(13)+”Вторая строка” + chr(13)+”Третья строка”  ‘и т.д.Удаление строк из модуля<span Verdana",«sans-serif»; color:#333333">ИмяПроекта..VBProject.VBComponents.Item(«Имя модуля»).CodeModule.DeleteLines(№, Количество)

<span Verdana",«sans-serif»;color:#333333">Где
№ — Номер строки в модуле с которой будут удаляться строки
Количество – количество удаляемых строк

Чтение строк из модуля<span Verdana",«sans-serif»; color:#333333">ИмяПроекта.VBProject.VBComponents.Item(«Имя модуля»).CodeModule.Lines(№, Количество)

<span Verdana",«sans-serif»;color:#333333">Где
№ — Номер строки, в модуле с которой будут начинаться чтение строк
Количество – количество читаемых строк

Определение количества строк в модуле<span Verdana",«sans-serif»; color:#333333">ИмяПроекта.VBProject.VBComponents.Item(«Имя модуля»).CodeModule.CountOfLinesПереименование модулей проекта<span Verdana",«sans-serif»; color:#333333">ИмяПроекта.VBProject.VBComponents.Item(“ИмяМодуля”).Name =”Новое имя модуля”Удаление модулей проекта<span Verdana",«sans-serif»; color:#333333">ИмяПроекта.VBProject.VBComponents.Remove  _ <span Verdana",«sans-serif»;color:#333333"><span Verdana",«sans-serif»;color:#333333">ИмяПроекта.VBProject.VBComponents.Item(«ИмяМодуля»)Определение количества модулей в проекте<span Verdana",«sans-serif»; color:#333333">ИмяПроекта.VBProject.VBComponents.CountСоздание нового модуля проекта<span Verdana",«sans-serif»; color:#333333">‘Создаем новый модуль макросов и подпрограмм<span Verdana",«sans-serif»;color:#333333"><span Verdana",«sans-serif»;color:#333333">ИмяПроекта.VBProject.VBComponents.Add vbext_ct_StdModule<span Verdana",«sans-serif»;color:#333333"><span Verdana",«sans-serif»;color:#333333">‘Определяем индекс созданного модуля<span Verdana",«sans-serif»;color:#333333"><span Verdana",«sans-serif»;color:#333333">k = ИмяПроекта.VBProject.VBComponents.Count<span Verdana",«sans-serif»;color:#333333"><span Verdana",«sans-serif»;color:#333333">‘даем свое имя модулю<span Verdana",«sans-serif»;color:#333333"><span Verdana",«sans-serif»;color:#333333">ИмяПроекта.VBProject.VBComponents.Item(k).Name = «Новое имя модуля»

<span Verdana",«sans-serif»">Постановка задачи иее решение

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

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

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

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

1.<span Times New Roman"">     

2.<span Times New Roman"">     

3.<span Times New Roman"">     

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 AsDouble

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

Sub ButtonCancel_Click()

    Sheet1.OptionButton1.Select

    Cng_List (False)

EndSub

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

Public Sub Obrabotka()

Obr =Sheet1.ListBox1.ListIndex + 1

n =Sheet2.Range(«R2»)

If Obr > 0 Then

    SelectCaseObr

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

            Callrab1(n)

        Case 2          '  среднее значение по столбцам

            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()

IfSheet1.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

IfSheet1.OptionButton2.Value = True Then

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

    Open «C:file1» ForInput 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

IfSheet1.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

    MsgBox («Матрица Азаполнена тестовыми значения (случайными числами)»)

End If

IfSheet1.OptionButton4.Value = True Then

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

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

End If

End Sub

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

If<span Courier New";color:black"> Логическое_выражение

Then<span Courier New";color:black"> Оператор

или сложнее

If<span Courier New";color:black"> Логическое_выражение Then<span Courier New";color:black">
Группа_операторов
End If

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

Далее…

Sub Cng_List(par AsBoolean)

    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<img src="/cache/referats/17365/image004.jpg" v:shapes="_x0000_i1026">

    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

    Call Init

End Sub

Sub OutA()                          '   Выводрезультатанаэкран<img src="/cache/referats/17365/image006.jpg" v:shapes="_x0000_i1027">

    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()                        '  ввод матрицы из файла<img src="/cache/referats/17365/image008.jpg" v:shapes="_x0000_i1028">

    For i = 1 To n

        For j = 1 To n

            If Sheet3.Visible = xlSheetHiddenThen

                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») =«Среднее значение элементов по строкам»<img src="/cache/referats/17365/image010.jpg" v:shapes="_x0000_i1029">

    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») =«Среднее значение элементов по столбцу»<img src="/cache/referats/17365/image012.jpg" v:shapes="_x0000_i1030">

    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 элементы в строках"<img src="/cache/referats/17365/image014.jpg" v:shapes="_x0000_i1031">

    Sheet4.Range(«G4») = "Строка"

    Sheet4.Range(«I4») = «Min»

    For i = 1 To n

        x = A(i, 1) 'min

        Sheet4.Cells(i + 4, 7) = i

        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 элементы по столбцам»<img src="/cache/referats/17365/image016.jpg" v:shapes="_x0000_i1032">

    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 элементы по строкам»<img src="/cache/referats/17365/image018.jpg" v:shapes="_x0000_i1033">

    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 элементы по

столбцам»<img src="/cache/referats/17365/image020.jpg" v:shapes="_x0000_i1034">

    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

 

еще рефераты
Еще работы по программированию, базе данных