Я запускаю несколько вложенных циклов, например:
Worksheet Loop
Apply AutoFilter to all unique values in COLUMN C
Apply AutoFilter to all unique values in COLUMN D
'Do some stuff
Моя цель состояла в том, чтобы создать двумерный массив уникальных значений из Column A
& Column B
, скопировав видимые ячейки столбца.удалите дубликаты и присвойте оставшиеся строки массиву.Затем я мог бы просто проходить через каждый массив, фильтровать по мере необходимости и делать какие-то вещи с видимыми ячейками.
По какой-то причине второй раз я пытаюсь назначить свойColumn B
массив, я получаю ошибку несоответствия типов в этой строке при попытке назначить мой временный массив (Get_Params
).Когда это происходит, значение LR2 = 2
, так что это не проблема.
Вот главный цикл, и происходит ошибка в функции Get_Params
в отмеченной строке
For Each ws In Worksheets
UnFilter ws
If ws.Name <> "Temp" Then
LR = ws.Range("C" & ws.Rows.Count).End(xlUp).Row
Set Target = ws.Range("A1:P" & LR)
Batches = Get_Batches(ws, LR)
For b = LBound(Batches, 1) To UBound(Batches, 1)
UnFilter ws
Target.AutoFilter 3, Batches(b, 1)
Params = Get_Params(ws, LR, Target)
For p = LBound(Params, 1) To UBound(Params, 1)
Target.AutoFilter 4, Params(p, 1)
'MsgBox TenPer(Target)
Next p
Next b
LR = 0
Set Target = Nothing
UnFilter ws
End If
Next ws
Function Get_Params(ws As Worksheet, LR As Long, Target As Range) As Variant()
Dim Temp As Worksheet: Set Temp = ThisWorkbook.Sheets("Temp")
Dim LR2 As Long
ws.Range("D1:D" & LR).SpecialCells(xlCellTypeVisible).Copy
Temp.Range("U1").PasteSpecial xlPasteValues
Temp.Range("U1").RemoveDuplicates 1, xlYes
LR2 = Temp.Range("U" & Temp.Rows.Count).End(xlUp).Row
Get_Params = Temp.Range("U2:U" & LR2).Value '<--- ERROR HERE (LR2 = 2)
Temp.Range("U1").EntireColumn.ClearContents
End Function