Переименование, Удаление, Создание, Добавление, Экспорт, Импорт модулей проекта
Все указанные в заголовке действия можно выполнить следующим образом: 1. В редакторе VBA нажать правую клавишу мыши на дереве проекта на имени нужного нам модуля (или на любом имени имеющегося модуля, для того, что бы создать новый модуль) 2. Выбрать соответствующий пункт меню (для создания модуля выбрать пункты: Вставить-модуль) Импорт и экспорт модуля из проекта в проект Импорт модуля через экспортируемый файл (а также модулей обычного 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 = “Первая строка”+ 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) 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() 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 MsgBox ("Матрица А заполнена тестовыми значения (случайными числами)") End If If Sheet1.OptionButton4.Value = True Then
'Выбор обработки Call Obrabotka – вызываем функцию «обработка». End If End Sub В этой конструкции некоторые операторы выполняются только при условии, содержащееся в конструкции логическое выражение имеет значение True (истинно): If Логическое_выражение Then Оператор или сложнее If Логическое_выражение Then В первом случает оператор может быть только один. Во втором сколько угодно (в том числе и один). Далее…
Воспользуйтесь поиском по сайту: ©2015 - 2024 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...
|