Добрый вечер! Уважаемые эксперты, помогите пожалуйста найти ошибку!
У меня есть две матрицы они записаны у меня на рабочем листе, и мне надо их перемножить и вывести результат
В моей программе есть некая ошибка которую пытаюсь найти но не получается
Приложение:
Dim B(1 To 4, 1 To 4) As Variant
Dim L(1 To 4, 1 To 1) As Variant
B(i, j) = Range("M4:P7").Cells(i, j).Value
L(i, j) = Range("K4:K7").Cells(i, j).Value
D = UmnozenieM(B, L)
For i = 1 To UBound(D, 1)
For j = 1 To UBound(D, 2)
Range("C11:C14").Cells(i, j).Value = D(i, j)
Next j
Next i
Public Function UmnozenieM(B As Variant, L As Variant) As Variant
Dim BL() As Variant
Dim i, j, k As Integer
Dim N, M, P, R As Integer
Dim Elem As Variant
Dim Correct As Boolean
Correct = True
'Îïðåäåëåíèå ðàçìåðíîñòåé ìàòðèö
If TypeName(B) = "Range" Then
N = B.Rows.Count: M = B.Columns.Count
ElseIf TypeName(B) = "Variant()" Then
N = UBound(B, 1): M = UBound(B, 2)
Else: Correct = False
End If
If TypeName(L) = "Range" Then
R = L.Rows.Count: P = L.Columns.Count
ElseIf TypeName(L) = "Variant()" Then
R = UBound(L, 1): P = UBound(L, 2)
Else: Correct = False
End If
'Ïðîâåðêà êîððåêòíîñòè çàäàíèÿ ðàçìåðíîñòè
If Correct And (M = R) Then
'Ðàçìåðíîñòü çàäàíà êîððåêòíî
ReDim BL(1 To N, 1 To P)
'Ïîñòðîåíèå ïðîèçâåäåíèÿ ìàòðèö BL =B*L
For i = 1 To N
For j = 1 To P
Elem = 0
For k = 1 To M
Elem = Elem + B(i, k) * L(k, j)
Next k
BL(i, j) = Elem
Next j
Next i
UmnozenieM = BL
End If
End Function