Как я могу изменить мой массив для следующего файла, который я открываю? - PullRequest
0 голосов
/ 24 октября 2018

У меня есть скрипт, созданный для входа в файл в dir и формирования массива на основе данных.

Как мне напечатать это:

Dim k As Long, x As Long, j As Long ' counters
Dim varArray() As Variant
ReDim varArray(1 To 13, 1 To 1)

ReDim varArray(1 To UBound(varArray, 1), 1 To 1)

        For j = 1 To .UsedRange.Rows.Count + 1
            If .Cells(j, 1) <> "" Then
                x = x + 1
                ReDim Preserve varArray(1 To UBound(varArray, 1), 1 To x)
                    For k = 1 To UBound(varArray, 1)
                        varArray(k, x) = .Cells(j, k)
                    Next
            End If
        Next

Это создает массив, но теперь мне нужно, чтобы он был напечатан на листе, поэтому я написал это:

    With Workbooks("master.xlsm").Worksheets("Sheet2")


            For j = 2 To UBound(varArray, 2)
                For k = 1 To UBound(varArray, 1)
                    ActiveSheet.Cells(j, k) = varArray(k, j)
                Next
            Next

    End With

Это работает, но теперь мне нужно очистить массив после его печати с помощью Redim, но это:

ReDim varArray(1 To UBound(varArray, 1), 1 To 1)

не очищает его после того, как я поместил его после последнего end with

Вот целый сценарий ради большей картины:

Option Explicit

Sub Stuff()

Dim k As Long, x As Long, j As Long ' counters
Dim varArray() As Variant
ReDim varArray(1 To 13, 1 To 1)

Dim MyFile As String


MyFile = Dir("M:\Merge Files\")

If Len(MyFile) <> 0 Then




    With ThisWorkbook.Worksheets(1)

        ReDim varArray(1 To UBound(varArray, 1), 1 To 1)

            For j = 1 To .UsedRange.Rows.Count + 1
                If .Cells(j, 1) <> "" Then
                    x = x + 1
                    ReDim Preserve varArray(1 To UBound(varArray, 1), 1 To x)
                        For k = 1 To UBound(varArray, 1)
                            varArray(k, x) = .Cells(j, k)
                        Next
                End If
            Next
    End With

        With Workbooks("master.xlsm").Worksheets("Sheet2")


                For j = 2 To UBound(varArray, 2)
                    For k = 1 To UBound(varArray, 1)
                        ActiveSheet.Cells(j, k) = varArray(k, j)
                    Next
                Next

        End With

ReDim varArray(1 To UBound(varArray, 1), 1 To 1)

End If


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