Возникли проблемы с перестановкой матрицы в VBA (Excel) - PullRequest
0 голосов
/ 31 декабря 2018

Я считаю, что проблема во втором из-за различий между c # и vba, но я не уверен на 100%, поэтому любая помощь будет полезна.

Буквально все

    kraj = False
    j = 0
    While kraj = False
        For i = 0 To 6 Step 1
            Cells(1, "A") = output(i, stacks(i))
            j = j + 1
        Next i

        For i = 0 To 6 Step 1
            stacks(i) = stacks(i) + 1
            If (stacks(i) = 3) Then
                If (i = 0) Then
                    kraj = True
                Else
                    stacks(i) = 0
                End If
            Else

            End If
        Next i


    Wend

Это рабочий код в C #

int[] ics = new int[7];
bool end = false;
int number_of_lines = 0;

while (!end)
{
    for (int i = 0; i < 7; i++)
    {
        Console.Write(output[i][ics[i]]);

        if (i / 6 == 1) 
        {
            Console.WriteLine(); number_of_lines++; 
        }
    }

    for (int i = ics.Length - 1; i >= 0; i--)
    {
        ics[i]++;

        if (ics[i] == output[i].Length)
            if (i == 0) 
                end = true;
            else 
                ics[i] = 0;
        else 
            break;
    }
}

1 Ответ

0 голосов
/ 31 декабря 2018

Пример массива

В этом примере демонстрируется использование массивов на основе 1, которые могут быть вставлены (помещены) в диапазон за один проход (см. Последнюю строку кода).

Sub ArrayExample()

  Const cLngRow As Long = 7         ' Array Number of Rows
  Const cIntColumn As Integer = 3   ' Array Number of Columns
  Const cStrFirst As String = "A1"  ' Target First Cell Range

  Dim vntEx As Variant  ' Array
  Dim i As Long         ' Array Row Counter
  Dim j As Integer      ' Array Column Counter

  ' Resize Array
  ReDim vntEx(1 To cLngRow, 1 To cIntColumn)

  ' Write to array.
  For i = 1 To cLngRow
    For j = 1 To cIntColumn
      vntEx(i, j) = i * j
    Next
  Next

  ' Print array to Immediate window
  For i = 1 To cLngRow
    For j = 1 To cIntColumn
      Debug.Print vntEx(i, j)
    Next
  Next

  ' Paste array into Worksheet. You don't have to loop.
  Range(cStrFirst).Resize(UBound(vntEx, 1), UBound(vntEx, 2)) = vntEx

End Sub
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...