Определение количества модулей в проекте — КиберПедия 

Опора деревянной одностоечной и способы укрепление угловых опор: Опоры ВЛ - конструкции, предназначен­ные для поддерживания проводов на необходимой высоте над землей, водой...

Археология об основании Рима: Новые раскопки проясняют и такой острый дискуссионный вопрос, как дата самого возникновения Рима...

Определение количества модулей в проекте

2020-04-01 147
Определение количества модулей в проекте 0.00 из 5.00 0 оценок
Заказать работу

ИмяПроекта.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
Группа_операторов
End If

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

Далее…

Sub Cng_List(par As Boolean)

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

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()                     ' Вывод результата на экран

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()                   ' ввод матрицы из файла

For i = 1 To n

   For j = 1 To n

       If Sheet3.Visible = xlSheetHidden Then

           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") = "Среднее значение элементов по строкам"

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") = "Среднее значение элементов по столбцу"

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 элементы в строках"

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 элементы по столбцам"

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 элементы по строкам"

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

столбцам"

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

   Sheet4.Cells(j + 4, 9) = s

Next j

End Sub

 

 

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

· А.Васильев, А.Андреев. VBA в Office 2000. Учебный курс. С-Пб.: "Питер", 2001

· Биллиг В.А. Средства разработки VBA-программиста. Офисное программирование. Том 1. М.: Издательско-торговый дом "Русская Редакция", 2001.

· Биллиг В.А. Мир объектов Excel 2000. М.: Издательско-торговый дом "Русская Редакция", 2001.

· В. И. Король. Visual Basic 6.0, Visual Basic for Applications 6.0. Язык программирования. Справочник с примерами. М.: Издательство КУДИЦ, 2000.


Поделиться с друзьями:

Двойное оплодотворение у цветковых растений: Оплодотворение - это процесс слияния мужской и женской половых клеток с образованием зиготы...

Биохимия спиртового брожения: Основу технологии получения пива составляет спиртовое брожение, - при котором сахар превращается...

Таксономические единицы (категории) растений: Каждая система классификации состоит из определённых соподчиненных друг другу...

История развития хранилищ для нефти: Первые склады нефти появились в XVII веке. Они представляли собой землянные ямы-амбара глубиной 4…5 м...



© cyberpedia.su 2017-2024 - Не является автором материалов. Исключительное право сохранено за автором текста.
Если вы не хотите, чтобы данный материал был у нас на сайте, перейдите по ссылке: Нарушение авторских прав. Мы поможем в написании вашей работы!

0.133 с.