Nhờ sửa lỗi Lọc Advanced Filter trong VBA (2 người xem)

Liên hệ QC

Người dùng đang xem chủ đề này

Tôi tuân thủ nội quy khi đăng bài

h4u_pro

Thành viên mới
Tham gia
29/7/16
Bài viết
3
Được thích
0
Tình hình là mình mới học VBA và lọc dữ liệu bằng VBA, lọc các bảng tính khác thì không sao nhưng đến bảng tính này thì lỗi mà loay hoay mãi không biết cách sửa, nhờ các bạn xem và sửa giúp. Cảm ơn
 

File đính kèm

Tình hình là mình mới học VBA và lọc dữ liệu bằng VBA, lọc các bảng tính khác thì không sao nhưng đến bảng tính này thì lỗi mà loay hoay mãi không biết cách sửa, nhờ các bạn xem và sửa giúp. Cảm ơn
Cho ví dụ cụ thể điều kiện lọc và kết quả mong muốn của bạn vào file xem thế nào. (Bài này nên đăng vào chuyên mục "Lập trình cho Excel").
 
Upvote 0
Tình hình là mình mới học VBA và lọc dữ liệu bằng VBA, lọc các bảng tính khác thì không sao nhưng đến bảng tính này thì lỗi mà loay hoay mãi không biết cách sửa, nhờ các bạn xem và sửa giúp. Cảm ơn
Theo tôi thì dữ liệu sheet bạn lọc là Filter của bảng PivotTable, nó khác với Filter của bảng thường nên code lỗi. Cách đơn giản để dùng lại code đó là bạn tạo 1 sheet mới rồi Copy Special > Paste value rồi chọn vùng filter lại thôi.
 
Upvote 0
Cho ví dụ cụ thể điều kiện lọc và kết quả mong muốn của bạn vào file xem thế nào. (Bài này nên đăng vào chuyên mục "Lập trình cho Excel").
Ví dụ cụ thể nằm trong code sheet Data
lọc các bảng tính khác thì không sao nhưng đến bảng tính này thì lỗi
Thay vì dùng advanced filter thì dùng ngay bộ lọc của Pivot table là ra bảng mới, copy qua sheet đích. Macro cũng viết theo hướng này.
 
Upvote 0
Theo tôi thì dữ liệu sheet bạn lọc là Filter của bảng PivotTable, nó khác với Filter của bảng thường nên code lỗi. Cách đơn giản để dùng lại code đó là bạn tạo 1 sheet mới rồi Copy Special > Paste value rồi chọn vùng filter lại thôi.
Mình cũng lọc file tồn kho đoạn code tương tự nhưng vẫn chạy ngon lành, viết code cho file xuất nhập mới lỗi. Mình không biết khác biệt nằm ở đâu. File code tồn kho vẫn chạy ngon lành mình gởi lên đây
Bài đã được tự động gộp:

Ví dụ cụ thể nằm trong code sheet Data

Thay vì dùng advanced filter thì dùng ngay bộ lọc của Pivot table là ra bảng mới, copy qua sheet đích. Macro cũng viết theo hướng này.
File mình dữ liệu lớn nên lọc theo Pivot table bị treo 1 lúc, lọc advanced filter không bị trễ bạn. Và để đỡ tốn thời gian làm thủ công từng hạn mục mình viết code luôn, thanks bạn đã hỗ trợ.
 

File đính kèm

Upvote 0
Mình không biết khác biệt nằm ở đâu.
Tôi cũng không biết khác biệt nằm đâu. Vì tải file bài 5 về chỉ chạy được vài lần. Sau đó chỉnh sửa gì đó (bất kỳ), chạy lại bị lỗi

File mình dữ liệu lớn nên lọc theo Pivot table bị treo 1 lúc, lọc advanced filter không bị trễ bạn.
Nếu dùng VBA để lọc pivot, treo 1 lúc là bao lâu? Tôi nghĩ chỉ 1 vài giây. Không đến nỗi phải qua lướt tich toc chờ.
 
Upvote 0
...
Nếu dùng VBA để lọc pivot, treo 1 lúc là bao lâu? Tôi nghĩ chỉ 1 vài giây. Không đến nỗi phải qua lướt tich toc chờ.
1 giây treo máy đối với dân hỏi baig ở đây là 1 thế kỷ.
Túm lại, hễ thời gian chạy nhận ra được thì là code dỏm (tiếng Tây là sin)

Luật:
Thời gian chạy là thời gian của người áp dụng.
Thời gian nắn nót code cho từng chi tiết nhỏ nhặt là thời gian của người viết code.
 
Upvote 0
Tôi chạy thử code vài lần thì thấy rằng sẽ lỗi khi thao tác "select" (nghĩa là nếu click trỏ chuột vào vùng dữ liệu của bảng Pivot rồi chạy code sẽ lỗi). Vì vậy để tránh lỗi xảy ra thì thêm 1 bước xử lý phải chọn 1 ô bất kỳ nằm ngoài vùng dữ liệu pivot. Trong file này, tôi chọn vị trí C1 tại sheet Pivot Ton Kho:
Mã:
With ThisWorkbook.Sheets("Pivot Ton Kho")
    .Select
    .Range("C1").Select
End With
Tôi đoán vậy. bạn thử thêm và code qua file mới.
 
Upvote 0
Mình cũng lọc file tồn kho đoạn code tương tự nhưng vẫn chạy ngon lành, viết code cho file xuất nhập mới lỗi. Mình không biết khác biệt nằm ở đâu. File code tồn kho vẫn chạy ngon lành mình gởi lên đây
Bài đã được tự động gộp:


File mình dữ liệu lớn nên lọc theo Pivot table bị treo 1 lúc, lọc advanced filter không bị trễ bạn. Và để đỡ tốn thời gian làm thủ công từng hạn mục mình viết code luôn, thanks bạn đã hỗ trợ.
Bạn thay ở đọan này thử xem
Mã:
Set rg = ThisWorkbook.Sheets("Pivot Ton Kho").Range("A3:H" & ThisWorkbook.Sheets("Pivot Ton Kho").Range("A" & Rows.Count).End(3).Row)
 Set cri_rg = ThisWorkbook.Sheets("LOC TONKHO").Range("A1:A" & ThisWorkbook.Sheets("LOC TONKHO").Range("A" & Rows.Count).End(3).Row)
 
Upvote 0
Bạn thay ở đọan này thử xem
Mã:
Set rg = ThisWorkbook.Sheets("Pivot Ton Kho").Range("A3:H" & ThisWorkbook.Sheets("Pivot Ton Kho").Range("A" & Rows.Count).End(3).Row)
 Set cri_rg = ThisWorkbook.Sheets("LOC TONKHO").Range("A1:A" & ThisWorkbook.Sheets("LOC TONKHO").Range("A" & Rows.Count).End(3).Row)
Mình cũng thử cách này rồi máy vẫn báo lỗi: lỗi advanced filter method of range class failed 1004
Ngoài ra mình còn thử Set rg = ThisWorkbook.Sheets("Pivot NhapXuat").Range("a4:n1048576") nhưng chạy code vẫn lỗi tương tự. AdvanceFilter thủ công thì vẫn bình thường.
Và code chỉ lỗi ở file NhapXuat.xlsm, file TONKHO.xlsm thì thao tác bình thường.
Có lẽ chọn range ở sheet Pivot NHapXuat có 1 điểm gì khác so với chọn range ở sheet Pivot Tonkho.
Cảm ơn bạn nhé.
 
Upvote 0
Web KT

Bài viết mới nhất

Back
Top Bottom