Не хочет записать данные из массива в лист 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
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д