Tôi vừa trải qua cùng một vấn đề. Sau một số thử nghiệm và lỗi, tôi phát hiện ra rằng nếu lựa chọn ở bên phải vùng bộ lọc của tôi VÀ số lượng bản ghi được hiển thị bằng 0, ShowAllData sẽ không thành công.
Ngữ cảnh ít hơn một chút có thể có liên quan. Tôi có một số tờ, mỗi tờ có một bộ lọc. Tôi muốn thiết lập một số bộ lọc tiêu chuẩn trên tất cả các tờ, do đó tôi sử dụng một số VBA như thế này
Sheets("Server").Select
col = Range("1:1").Find("In Selected SLA").Column
ActiveSheet.ListObjects("Srv").Range.AutoFilter Field:=col, Criteria1:="TRUE"
Mã này sẽ điều chỉnh bộ lọc trên cột với tiêu đề "Trong SLA được chọn", và để lại tất cả các bộ lọc khác không thay đổi . Điều này có tác dụng phụ không may rằng tôi có thể tạo ra một bộ lọc cho thấy không có hồ sơ. Điều này là không thể sử dụng giao diện người dùng một mình.
Để tránh tình huống đó, tôi muốn đặt lại tất cả các bộ lọc trước khi áp dụng tính năng lọc ở trên. Mã đặt lại của tôi trông giống như thế này
Sheets("Server").Select
If ActiveSheet.FilterMode Then ActiveSheet.ShowAllData
Lưu ý cách tôi không di chuyển ô đã chọn. Nếu lựa chọn ở bên phải, nó sẽ không loại bỏ các bộ lọc, do đó cho phép mã bộ lọc xây dựng một bộ lọc hàng không. Lần thứ hai mã được chạy (trên một bộ lọc hàng không) ShowAllData sẽ thất bại.
Cách giải quyết rất đơn giản: Di chuyển vùng chọn bên trong các cột lọc trước khi gọi ShowAllData
Application.Goto (Sheets("Server").Range("A1"))
If ActiveSheet.FilterMode Then ActiveSheet.ShowAllData
Đây là trên Excel phiên bản 14.0.7128.5000 (32-bit) = Office 2010
Nguồn
2014-10-25 10:28:40
Lỗi nào bạn gặp phải trên đường dây gặp sự cố? –
Lỗi thời gian chạy: Phương thức ShowAllData của lớp bảng tính không thành công –