Мои данные, как следует:Excel VBA Автофильтр
Имя Значение флага
Alice 5 Выкупу
Боб 8 Перейти
Dan 9
Alice 1
Alice 6 Jump
Dan 0 Выкуп
Боб 8 Перейти
Если для любого имени, в какой-либо записи, в поле флага, если есть «Выкуп», то я хочу, чтобы сохранить все записи, связанные с этим именем. У Алисы 3 записи, и один из них - BUYBACK, поэтому я хочу сохранить все записи ALice. У Дэна есть выкуп в одном из двух, поэтому я хочу сохранить обе записи Дэна, пока обе записи Боба будут удалены.
Когда я пытаюсь сделать это ниже, я получаю сообщение об ошибке в моем автофильтре. Ошибка говорит «Требуется объект». Я не могу понять, что случилось.
n = 1
Dim BBK_Array() As Variant
For j = 1 To FinalRow
If Cells(j, 3).Value = "BUYBACK" Then
If n = 1 Then
ReDim Preserve BBK_Array(1 To n)
BBK_Array(n) = Cells(j, 1).Value
n = n + 1
ElseIf BBK_Array(n - 1) <> Cells(j, 1).Value Then
ReDim Preserve BBK_Array(1 To n)
BBK_Array(n) = Cells(j, 1).Value
n = n + 1
End If
End If
Next j
ActiveWorksheet.UsedRange.AutoFilter Field:=1, Criteria1:=BBK_Array(), Operator:=xlFilterValues
EDIT:
Когда я сделал это, он работал. Я не знаю почему:
ActiveWorkbook.Activesheet.UsedRange.AutoFilter Field:=1, Criteria1:=BBK_Array(), Operator:=xlFilterValues
Где ** FinalRow ** учрежденному ?? –
@ Студент Гэри .. ранее в коде. Когда я сделал Activeworkbook.activesheet, тогда это сработало. – Amatya
OK Я предполагаю, что мой лист неактивен или что-то в этом роде. Должен ли я удалить вопрос? Можете ли вы рассказать мне, почему работает workworkbook.activesheet, но просто activesheek нет? Я написал макрос в том же файле, в котором хранятся данные. спасибо – Amatya