Я только испытал те же проблемы. После некоторой пробной ошибки я обнаружил, что , если выбор был справа от области моего фильтра. И количество показанных записей было равно нулю, ShowAllData завершится с ошибкой.
Возможно, немного больше контекста. У меня есть несколько листов, каждый с фильтром. Я хотел бы установить некоторые стандартные фильтры на всех листах, поэтому я использую некоторые VBA как этот
Sheets("Server").Select
col = Range("1:1").Find("In Selected SLA").Column
ActiveSheet.ListObjects("Srv").Range.AutoFilter Field:=col, Criteria1:="TRUE"
Этот код будет настроить фильтр на колонке с заголовком «В Selected ОАС», и оставить все другие фильтры без изменений , У этого есть неудачный побочный эффект, который я могу создать фильтр, который показывает нулевые записи. Это невозможно с использованием пользовательского интерфейса.
Чтобы избежать этой ситуации, я хотел бы сбросить все фильтры, прежде чем применять фильтрацию выше. Мой код возврата выглядел так:
Sheets("Server").Select
If ActiveSheet.FilterMode Then ActiveSheet.ShowAllData
Обратите внимание, что я не перемещал выбранную ячейку. Если выбор был справа, он не удалял фильтры, таким образом, чтобы код фильтра создавал фильтр с нулевой строкой. Во второй раз, когда выполняется код (в фильтре с нулевой строкой) ShowAllData завершится с ошибкой.
Обходной проста: Перемещение выделения внутри колонн фильтра перед вызовом ShowAllData
Application.Goto (Sheets("Server").Range("A1"))
If ActiveSheet.FilterMode Then ActiveSheet.ShowAllData
Это было Excel версии 14.0.7128.5000 (32-разрядная версия) = Office 2010
Какая ошибка вы получаете на линии, на которой он падает? –
ошибка во время выполнения: ShowAllData метод класса Worksheet не удалось –