Код программы
Dim summa1 As Double
Dim summa2 As Double
Dim a() As Double
Dim m As Variant
‘задаём начальные параметры при инициализации формы:
Private Sub UserForm_Initialize()
Application.Visible = False
UserForm1.Caption = "Курсовой проект"
CommandButton1.Default = True
TextBox1.SetFocus
End Sub
‘процедура заполнения матрицы:
Private Sub CommandButton1_Click()
m = TextBox1.Text
If IsNumeric(TextBox1.Text) = False Then
MsgBox "Размерность матрицы должна задаваться числом", 16, "Ошибка ввода"
TextBox1.Text = ""
TextBox1.SetFocus
Exit Sub
End If
If m <= 0 Then
MsgBox "Размерность матрицы задаётся положительным числом отличным от нуля ", 16,
"Ошибка ввода"
TextBox1.Text = ""
TextBox1.SetFocus
Exit Sub
End If
m = CDbl(m)
If m <> Int(m) Then
MsgBox " Размерность матрицы должна задаваться целым числом ", 16, " Ошибка ввода "
TextBox1.Text = ""
TextBox1.SetFocus
Exit Sub
End If
ReDim a(1 To m, 1 To m)
For i = 1 To m
For j = 1 To m
a(i, j) = Int((7 * Rnd) + 0)
Next j
Next i
With ListBox1
ColumnCount = m
List = a
End With
End Sub
'процедура очистки пользовательской формы:
Private Sub CommandButton2_Click()
OptionButton1.Value = False
OptionButton2.Value = False
TextBox1.Text = ""
TextBox2.Text = ""
ListBox1.Clear
TextBox1.SetFocus
End Sub
'процедура выхода из программы:
Private Sub CommandButton3_Click()
UserForm1.Hide
Application.Quit
End Sub
' вызов краткой информации о программе:
Private Sub CommandButton4_Click()
MsgBox "Программа для заполнения случайными числами" & Chr(13) & _
"от 0 до 6 квадратной матрицы, размерностью" & Chr(13) & _
"задаваемой пользователем, и вычисления суммы" & Chr(13) & _
"элементов матрицы, в зависимости от выбрано-" & Chr(13) & _
"го переключателя." & Chr(13) & _
" Разработчик: Логунов А.П..", 48, "О программе"
End Sub
'процедура вычисления суммы элементов, расположенных под главной диагональю:
Private Sub OptionButton1_Click()
summa1 = 0
f = 2
b = m - 1
For i = f To m
For j = 1 To m - b
summa1 = summa1 + a(i, j)
Next j
f = f + 1
b = b - 1
Next i
TextBox2.Text = summa1
End Sub
'процедура вычисления суммы элементов, составляющих главную диагональ:
Private Sub OptionButton2_Click()
summa2 = 0
For i = 1 To m
For j = 1 To m
If i = j Then
summa2 = summa2 + a(i, j)
End If
Next j
Next i
TextBox2.Text = summa2
End Sub
'процедура для работы с Excel:
Private Sub CommandButton5_Click()
Application.Visible = True
Cells.Select
Selection.ClearContents
Range("A1").Select
UserForm1.Hide
m = InputBox("Задайте размерность матрицы", "Окно ввода")
If IsNumeric(m) = False Then
MsgBox ""Размерность матрицы должна задаваться числом", 16, "Ошибка ввода"
Exit Sub
End If
If m <= 0 Then
MsgBox "Размерность матрицы задаётся положительным числом отличным от нуля ", 16,
"Ошибка ввода"
Exit Sub
End If
m = CDbl(m)
If m <> Int(m) Then
MsgBox " Размерность матрицы должна задаваться целым числом ", 16, " Ошибка ввода "
Exit Sub
End If
Cells(5, 1) = "Матрица размерностью n=" & m & ":"
ReDim a(1 To m, 1 To m)
For i = 1 To m
For j = 1 To m
a(i, j) = Int((7 * Rnd) + 0)
Cells(i + 5, j) = a(i, j)
Next j
Next i
summa1 = 0
f = 2
b = m - 1
For i = f To m
For j = 1 To m - b
summa1 = summa1 + a(i, j)
Next j
f = f + 1
b = b - 1
Next i
Cells(2, 1) = "Сумма элементов под главной диагональю =" & summa1
summa2 = 0
For i = 1 To m
For j = 1 To m
If i = j Then
summa2 = summa2 + a(i, j)
End If
Next j
Next i
Cells(3, 1) = " Сумма элементов составляющих главную диагональ =" & summa2
Select Case MsgBox("Вернуться к UserForm?", vbYesNo, "Окно возврата")
Case vbYes
Application.Visible = False
TextBox1.SetFocus
UserForm1.Show
Case vbNo
End Select
End Sub
Дата: 2019-07-24, просмотров: 162.