у меня 2 одинаковые матрицы. У них есть ячейки: первая матрица имеет ячейки a11, a12, ..., aij, вторая ячейка b11, b12, ..., bij. Мне нужно написать формулу =A11*B11 + A12*B12 + A13*B13 ... + Aij*Bij
и так далее до правого нижнего угла матрицы. Я хотел сделать макросы, чтобы не тратить время на матрицу 10 х 10, потому что написание такой формулы 100 раз занимает очень много времени. У меня есть код:
Sub myMacros()
'where to
Dim form As String
form = "="
'Choose cell where to put formula
Dim whereToPutFormula As Range
Set whereToPutFormula = Application.InputBox("Choose cell where to put formula", Type:=8)
'Range of first and second matrix
Dim firstMatrix As Range
Set firstMatrix = Application.InputBox("Range of the first matrix", Type:=8)
Dim secondMatrix As Range
Set secondMatrix = Application.InputBox("Range of the second matrix", Type:=8)
col_number = InputBox("How many columns in matrix")
row_number = InputBox("How many rows in matrix")
'variables for loop
Dim Rows As Integer
Dim Columns As Integer
'loop for formula
For Rows = 1 To row_number
For Columns = 1 To col_number
'val_from_firstMatrix = Range(firstMatrix).Cells().Value2
'val_from_secondMatrix = Range(secondMatrix).Cells().Value2
If Rows = row_number And Columns = col_number Then
form = form & Range(firstMatrix).Cells(Rows, Columns).Address(RowAbsolute:=False, ColumnAbsolute:=False) & "*"
form = form & Range(secondMatrix).Cells(Rows, Columns).Address(RowAbsolute:=False, ColumnAbsolute:=False)
Debug.Print form
Else:
form = form & Range(firstMatrix).Cells(Rows, Columns).Address(RowAbsolute:=False, ColumnAbsolute:=False) & "*"
form = form & Range(secondMatrix).Cells(Rows, Columns).Address(RowAbsolute:=False, ColumnAbsolute:=False) & " + "
Debug.Print form
End If
Next Columns
Next Rows
End Sub
Но он возвращает ошибку
Ошибка 1004, метод 'Range' поля '_Global' объекта.
если при условии. Что я должен изменить, чтобы он работал?