'Заполнение тестового значения
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
В этой конструкции некоторые операторы выполняются только при условии, содержащееся в конструкции логическое выражение имеет значение 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
Список использованной литературы