Не хочет записать данные из массива в лист Excel - VBA

Узнай цену своей работы

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

Тут код програмки .
Сперва выделяется два массива на листе ексель , потом програма их умножает и выводит через MsgBox , хотел сохранить данные из массива на ексель в ячейки которые пустие , пробовал както так
но на строке
почему то просто ничего ничего не делает и завершает программу . Подскажите что не так.

Решение задачи: «Не хочет записать данные из массива в лист Excel»

textual
Листинг программы
Function Multiplication(x As Range, y As Range)
        
    Dim arr_one(), arr_two(), arr_three()
    
    arr_one = x.Value ' first arr '
    arr_two = y.Value ' second arr '
    
    ReDim Preserve arr_three(1 To x.Rows.Count, 1 To y.Columns.Count) ' three arr -> set size '
    
    If x.Rows.Count <> y.Columns.Count Then MsgBox "Кількість рядків 1 матриці повинна = кількості стовпців 2 матриці ": GoTo ended
    If x.Rows.Count = y.Columns.Count Then Call multiplication_arr(arr_one, arr_two, arr_three): _
                                           Call output_arr(arr_three) ' output in MsgBox '
     
    Dim i&, j&
    ReDim temp(1 To UBound(arr_one), 1 To UBound(arr_two, 2))
    
    For i = 1 To UBound(temp)
        For j = 1 To UBound(temp, 2)
        
           temp(i, j) = arr_three(i, j)
           
        Next j
    Next i
    
   Multiplication = temp
        
ended:
End Function
Sub output_arr(arr_three()) ' output arr '
 
Dim strS$, ttm&
 
For i = 1 To UBound(arr_three)
   For j = 1 To UBound(arr_three, 2)
   
      ttm = j Mod UBound(arr_three, 2)
      If ttm = 0 Then strS = strS + " " + Str(arr_three(i, j)) + vbCrLf
      If ttm <> 0 Then strS = strS + " " + Str(arr_three(i, j))
      
   Next j
Next i
 
MsgBox (strS)
 
End Sub
Sub multiplication_arr(arr_f(), arr_s(), arr_th()) 'A * B'
 
'result multiplication/cycle/num row/num colum/amount cycle '
Dim save_num&, count_cycle&, a_row&, a_colum&, amount&
a_row = 1: a_colum = 1: count_cycle = 0: amount = 0
save_num = 0
 
For i = 1 To UBound(arr_f) ' - first cycle '
   For j = 1 To UBound(arr_f, 2)
             For m = 1 To UBound(arr_s, 2) ' - second cycle '
                If count_cycle >= UBound(arr_s, 2) Then GoTo here
                    For n = 1 To UBound(arr_s)
                    
                        save_num = save_num + arr_f(a_row, n) * arr_s(n, a_colum) 'multiplication and addition numbers '
                        amount = amount + 1
                       
                    Next n
                    'save result '
                    arr_th(a_row, a_colum) = save_num: a_row = a_row + 1
                    save_num = 0: If amount >= (UBound(arr_f) * UBound(arr_s)) Then amount = 0: _
                                                                                               m = 0: _
                                                                       count_cycle = count_cycle + 1: _
                                                                    a_row = 1: a_colum = a_colum + 1
              Next m
    Next j
Next i
 
here:
 
End Sub

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

8   голосов , оценка 4 из 5
Похожие ответы