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