Excel копирует все данные, даже если критерии автофильтра не соответствуют вводу данных

Добрый день всем,

Я новичок здесь и имею только разумные знания о VBA, поэтому, пожалуйста, извините, если моя терминология может быть неправильной.

У меня есть файл excel с несколькими макросами, которые я написал. Основной макрос применяет автофильтр ко всем моим данным на основе критериев, которые я ввожу в ячейку на отдельном листе в той же книге. Фильтр работает нормально, и если указанные критерии соответствуют записи в моих данных, эти данные копируются и вставляются на отдельный лист. Однако, к сожалению, если я ввожу критерий, которого нет в данных, excel/VBA копирует все мои данные (каждую из 7000 записей) и вставляет все данные в отдельный лист, хотя на самом деле никакого результата не было найдено. Я надеялся, что вы сможете дать мне совет, как преодолеть это и какой код использовать, чтобы фильтр работал правильно.

В основном я хочу, чтобы, если фильтр не может соответствовать каким-либо данным, данные не копировались/не вставлялись. Мой макрос проверяет несколько критериев (всего 8), а затем применяет автофильтр. Я не знаю, нужен ли мне код и добавлять его в каждую строку кода для каждого критерия или только в одну в конце.

Спасибо за помощь!


person user2577344    schedule 12.07.2013    source источник


Ответы (1)


Я бы проверил, дал ли фильтр какие-либо результаты/строки, сравнив количество строк в таблице с количеством строк в отфильтрованной таблице.

'assuming the table starts from A1,
MsgBox Range("A1").CurrentRegion.Rows.Count
'confirms the number of rows in the table.
'After trying AutoFilter,
MsgBox ActiveSheet.AutoFilter.Range.Columns(1).SpecialCells(xlCellTypeVisible).Count
'confirms the number of filtered rows.

Сохраните эти два значения в переменных и сравните их или просто проверьте, равно ли второе значение 1 (строка заголовка). Если это один, не пытайтесь скопировать.

person Andy G    schedule 12.07.2013