Опора деревянной одностоечной и способы укрепление угловых опор: Опоры ВЛ - конструкции, предназначенные для поддерживания проводов на необходимой высоте над землей, водой...
Археология об основании Рима: Новые раскопки проясняют и такой острый дискуссионный вопрос, как дата самого возникновения Рима...
Топ:
Комплексной системы оценки состояния охраны труда на производственном объекте (КСОТ-П): Цели и задачи Комплексной системы оценки состояния охраны труда и определению факторов рисков по охране труда...
Методика измерений сопротивления растеканию тока анодного заземления: Анодный заземлитель (анод) – проводник, погруженный в электролитическую среду (грунт, раствор электролита) и подключенный к положительному...
Устройство и оснащение процедурного кабинета: Решающая роль в обеспечении правильного лечения пациентов отводится процедурной медсестре...
Интересное:
Финансовый рынок и его значение в управлении денежными потоками на современном этапе: любому предприятию для расширения производства и увеличения прибыли нужны...
Лечение прогрессирующих форм рака: Одним из наиболее важных достижений экспериментальной химиотерапии опухолей, начатой в 60-х и реализованной в 70-х годах, является...
Инженерная защита территорий, зданий и сооружений от опасных геологических процессов: Изучение оползневых явлений, оценка устойчивости склонов и проектирование противооползневых сооружений — актуальнейшие задачи, стоящие перед отечественными...
Дисциплины:
2020-04-01 | 147 |
5.00
из
|
Заказать работу |
|
|
Создание нового модуля проекта
‘Создаем новый модуль макросов и подпрограмм ИмяПроекта.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 - Не является автором материалов. Исключительное право сохранено за автором текста.
Если вы не хотите, чтобы данный материал был у нас на сайте, перейдите по ссылке: Нарушение авторских прав. Мы поможем в написании вашей работы!