Матрицы, функции, подпрограммы и прочее - VBA

Формулировка задачи:

Ребзя, помогите, пожалуйста. Есть условие: Есть 2 матрицы 6х6. Для матрицы, в которой выполняется условие "больше отрицательных элементов", ищется сумма положительных в каждой строке. Есть код. На выходе итоговый столбец полностью зануляется, хотя того не должно быть. Что я делаю не так?)
Option Base 1
Sub Lab()
Dim A(6, 6) As Integer
Dim B(6, 6) As Integer
Dim i, j, p, s As Integer
Cells.Clear
p = 0
s = 0
For i = 1 To 6
For j = 1 To 6
Randomize
A(i, j) = 4 * Rnd - 2
B(i, j) = 6 * Rnd - 3
If A(i, j) < 0 Then
p = p + 1
End If
If B(i, j) < 0 Then
s = s + 1
End If
Next j
Next i
'кусок кода, не влияющий ни на что
For i = 1 To 6
For j = 1 To 6
Cells(i, j) = A(i, j)
Cells(i + 7, j) = B(i, j)
Next j
Next i
'конец куска ни на что не влияющего кода
Cells(6, 7) = p 'для проверки кол-ва отрицательных элементов
Cells(13, 7) = s 'для проверки кол-ва отрицательных элементов
Check p, s
If Check(p, s) = 1 Then
Call Proc(A, i, j)
ElseIf Check(p, s) = 2 Then
Call Proc(B, i, j)
Else
MsgBox ("Количество отрицательных элементов одинаково, условие не выполняется")
End If
 
End Sub
 
Public Sub Proc(ByVal F As Variant, ByVal i As Integer, ByVal j As Integer)
ReDim F(1 To 6, 1 To 6) As Integer
Dim D(6) As Integer
For i = 1 To 6
D(i) = 0
For j = 1 To 6
If F(i, j) > 0 Then
D(i) = D(i) + F(i, j)
End If
Next j
Next i
For i = 1 To 6
Cells(i, 8) = D(i)
Next i
End Sub
 
Function Check(ByVal q As Integer, ByVal w As Integer) As Integer
If q > w Then
Check = 1
ElseIf q < w Then
Check = 2
Else
Check = 3
End If
End Function

Код к задаче: «Матрицы, функции, подпрограммы и прочее - VBA»

textual
Public Sub Proc(ByVal F As Variant, ByVal i As Integer, ByVal j As Integer)
'''''''ReDim F(1 To 6, 1 To 6) As Integer
Dim D(6) As Integer

14   голосов, оценка 3.714 из 5


СОХРАНИТЬ ССЫЛКУ