Добрый день, возник вопрос с очисткой массива, макрос vba:
Пытаюсь очистить массив с помощью Erase arr2 - выходит ошибка, если в самом конце перед wb.Close ставить Erase arr2, то он не очищается
Пробовал уже в каждую строку Erase засовывать - либо ошибка, либо вообще все очищается, либо наоборот ничего не меняется
Выкладываю изначальные файлы (3 файла (*-file))
И что должно получится в итоге (3 файла(*-result))
| Код |
|---|
Sub Get_All_File_from_Folder()
Dim sFolder As String, sFiles As String, arr, arr2, arr3, i As Long, n As Long, lr As Long, k As Long, COL As New Collection
Dim wb As Workbook
With Application.FileDialog(msoFileDialogFolderPicker)
If .Show = False Then Exit Sub
sFolder = .SelectedItems(1)
End With
sFolder = sFolder & IIf(Right(sFolder, 1) = Application.PathSeparator, "", Application.PathSeparator)
Application.ScreenUpdating = False
sFiles = Dir(sFolder & "*.xls*")
Do While sFiles <> ""
Set wb = Application.Workbooks.Open(sFolder & sFiles)
Erase arr2
With Sheets(1)
Columns(6).Delete
Columns(6).Delete
Columns(6).Delete
lr = .Cells(Rows.Count, 1).End(xlUp).Row
arr = .Range("A2:F" & lr)
For i = LBound(arr) To UBound(arr)
On Error Resume Next
COL.Add arr(i, 1) & "//" & arr(i, 2) & "//" & arr(i, 3) & "//" & arr(i, 4) & "//" & "?????", arr(i, 1) & "//" & arr(i, 2) & "//" & arr(i, 3) & "//" & arr(i, 4) & "//" & "?????" & "//"
Next i
ReDim arr2(1 To COL.Count, 1 To 6)
For i = 1 To COL.Count
arr3 = Split(COL(i), "//")
For n = LBound(arr3) To UBound(arr3)
arr2(i, n + 1) = arr3(n)
Next n
arr2(i, 6) = Application.WorksheetFunction.SumIfs(.Columns(6), _
.Columns(1), arr3(0), _
.Columns(2), arr3(1), _
.Columns(3), arr3(2), _
.Columns(4), arr3(3))
Next i
End With
ActiveSheet.UsedRange.Offset(1).Clear
Sheets(1).Range("A2").Resize(UBound(arr2), 6) = arr2
Columns(5).Delete
Columns(3).Delete
wb.Close True
sFiles = Dir
Loop
Application.ScreenUpdating = True
End Sub
|
Пытаюсь очистить массив с помощью Erase arr2 - выходит ошибка, если в самом конце перед wb.Close ставить Erase arr2, то он не очищается
Пробовал уже в каждую строку Erase засовывать - либо ошибка, либо вообще все очищается, либо наоборот ничего не меняется
Выкладываю изначальные файлы (3 файла (*-file))
И что должно получится в итоге (3 файла(*-result))