Десять лет назад во всем мире было не более двух миллионов программистов. Сегодня их насчитывается около десяти миллионов, из них не менее 70 процентов используют в качестве хотя бы одно из инструментов VB или VBA.
Проект – Файл приложения Microsoft Office, в котором написана программа VBA
Приложение – Приложение Microsoft Office (Word, Excel, Access, Power Point и др.)
Модуль – Именованная область в файле проекта содержащая в себе код, написанный на языке VBA
Окно проекта – “дерево”, содержащее на себе все “деревья” загруженных проектов, “дерево” состоит из имен модулей.
Редактор VBA – редактор встроенный внутри приложения, позволяющий писать и редактировать программы на языке VBA.
Для перехода в редактор VBA можно воспользоваться пунктами меню: Сервис-Макросы-Редактор Visual Basic (Рис.1) (В Access выбрать закладку модулей или форм, выбрать мышью нужный объект, зайти в меню: Вид-Программа)
Для открытия окна проекта, необходимо воспользоваться пунктами меню редактора VBA: Вид-Дерево проекта
Двойным кликом мыши по папке с именами модулей можно открыть ее.
Двойным кликом мыши по имени модуля, можно активизировать окно редактора нужного вам модуля.
Примечание: В Access модули можно обрабатывать, не заходя в редактор VBA, выбрав закладку Модули. В Access 1997 модули обрабатываются только через закладку Модули, т.к. окна проекта в этой версии Access не существует.
Все указанные в заголовке действия можно выполнить следующим образом:
1. В редакторе VBA нажать правую клавишу мыши на дереве проекта на имени нужного нам модуля (или на любом имени имеющегося модуля, для того, что бы создать новый модуль)
2. Выбрать соответствующий пункт меню (для создания модуля выбрать пункты: Вставить-модуль)
Для пересылки модуля из проекта в проект можно воспользоваться следующим приемом:
1. Экспортировать модуль из проекта в файл (в редакторе VBA нажать правую клавишу мыши на дереве проекта, на имени модуля, и выбрать пункт “Экспорт файла”)
2. Импортировать модуль из файла в проект (данный файл может являться не только экспортируемым файлом из VBA приложения, но и быть модулем обычного VB)
В редакторе VBA нажать правую клавишу мыши на дереве проекта, на имени файла, и выбрать пункт “Экспорт файла”
.
1. В редакторе VBA кликнуть в окне проекта два раза по имени нужного нам модуля (см. рис 1)( В Access выбрать закладку Модули и имя соответствующего модуля, войти в меню Вид-Программа.).
2. Перейти в активизированное окно редактора модуля (справа от окна проекта) и редактировать его.
3. Из верхнего левого списка, расположенного вверху окна редактора модуля, можно выбирать либо раздел описания, либо имя нужной вам подпрограммы (В модуле Форм, Листов Excel, Книги Excel, Документа Word и т.п. из верхнего правого списка можно выбрать Общую Область, либо имя объекта (Листа, Книги, Документа и т.п.), либо имя элемента управления (который находится на соответствующем Листе, Книге, Документе и т.п.), при выбранном объекте, из правого списка выбирается имя события, для того, что бы активизировать соответствующую событийную процедуру объекта или элемента управления).
Под “ИмяПроекта” в программной конструкции подразумевается соответствующий объект. Для связи с книгой Excel предназначен объект - Workbooks("Имя книги"), а для связи с документом Word объект - Documents(“Имя документа”). Объект для связи с документом, который содержит общие макросы приложения Word, имеет имя: NormalTemplate, в Excel приложении данный объект записывается следующим образом: Workbooks("PERSONAL").
ИмяПроекта.VBProject.VBComponents.Item("Имя модуля").Export "Путь и ИмяФайла"
ИмяПроекта.VBProject.VBComponents.Import "Путь и ИмяФайла"
Application.OrganizerCopy Source:= _
“Путь и имя проекта, откуда берется модуль”, Destination:= _
“Путь и имя проекта куда импортируется модуль”, Name:="Имя модуля", Object _
:=wdOrganizerObjectProjectItems
ИмяПроекта.VBProject.VBComponents.Item("Имя модуля").CodeModule.InsertLines №, S
Где
№ - Номер строки в модуле, с которой будут вставляться новые строки
S – Вставляемая строка символов
Примечание:
В переменной S могут содержаться коды символов конца строк , которые можно получить следующей функцией со следующим аргументом: CHR(13). Таким образом, переменная S может содержать в себе сразу несколько строк:
S = “Первая строка”+ chr(13)+”Вторая строка” + chr(13)+”Третья строка” ‘и т.д.
ИмяПроекта..VBProject.VBComponents.Item("Имя модуля").CodeModule.DeleteLines(№,Количество)
Где
№ - Номер строки в модуле с которой будут удаляться строки
Количество – количество удаляемых строк
ИмяПроекта.VBProject.VBComponents.Item("Имя модуля").CodeModule.Lines(№,Количество)
Где
№ - Номер строки, в модуле с которой будут начинаться чтение строк
Количество – количество читаемых строк
ИмяПроекта.VBProject.VBComponents.Item("Имя модуля").CodeModule.CountOfLines
ИмяПроекта.VBProject.VBComponents.Item(“ИмяМодуля”).Name =”Новое имя модуля”
ИмяПроекта.VBProject.VBComponents.Remove _
ИмяПроекта.VBProject.VBComponents.Item("ИмяМодуля")
ИмяПроекта.VBProject.VBComponents.Count
‘Создаем новый модуль макросов и подпрограмм
ИмяПроекта.VBProject.VBComponents.Add vbext_ct_StdModule
‘Определяем индекс созданного модуля
k = ИмяПроекта.VBProject.VBComponents.Count
‘даем свое имя модулю
ИмяПроекта.VBProject.VBComponents.Item(k).Name = "Новое имя модуля"
Постановка задачи и ее решение
Вид объекта – Числовая прямоугольная матрица.
Параметры объекта – Размерности матрицы
Входные формы – Ввод элементов матрицы со столбцом (Клавиатура, Файл, Тест-формула), Выбор вида обработки.
Виды обработки – Построение диаграмм
1. Средние значения по строкам и столбцам
2. Максимальные значения по строкам и столбцам
3. Минимальные значения по строкам и столбцам
Option Explicit
Const m = 15
Dim i, j, k As Integer
Public Obr As Byte
Dim n, A(m, m), L(m) As Double
Public inp, NameF, Path As String
Dim Bukva As Variant
Dim det, s, x As Double
Public объявляет глобальную переменную. Объявлённая таким способом переменная становится доступной из всех модулей и форм проекта. Если переменная объявлена в разделе глобальных объявлений, то доступ к ней осуществляется просто по её имени. Если же она объявлена в коде формы, то доступ к ней из других форм и модулей осуществляется так: ИмяФормы. ИмяПеременной.
Sub ButtonCancel_Click()
Sheet1.OptionButton1.Select
Cng_List (False)
End Sub
Sub объявляет процедуру с именем name и параметрами arglist.
Public Sub Obrabotka()
Obr = Sheet1.ListBox1.ListIndex + 1
n = Sheet2.Range("R2")
If Obr > 0 Then
Select Case Obr
Case 1 ' Среднее значение по строкам
Call rab1(n)
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