Chạy đoạn Code sau bị lỗi:
Rất mong Thầy hỗ trợ.
Chào bạn, mình không xem được nội dung đoạn code lỗi do ảnh nhỏ và mờ. Bạn có thể xem phần hướng dẫn đính kèm (bên dưới khung chat) để đính kèm file hoặc ảnh cho rõ hơn nhé.
Thành thật xin lỗi Thầy.
Tôi bị lỗi:
VB: run-time error ‘1004’: Application-defined or object-defined error
Khi chạy đoạn code sau:
Sub ExportLossTree()
Dim vItem As Long
vItem = 3 'Vi du chon ModuleID la 3
With ThisWorkbook.SlicerCaches("Slicer_ModuleID_Export")
.ClearManualFilter
.SlicerItems(3).Selected = True "Đây là đoạn bị lỗi
End With
End Sub
Tôi tạo các Pivot Table từ mô hình Power Pivot. Tôi nghĩ hình như nó bị lỗi liên quan đến OLAP hay CUBE function.
Kính mong Thầy giúp đỡ.
Mình hiện chưa rõ mục đích của đoạn code này làm việc gì.
Theo nội dung code thì hiện bạn đang muốn dùng VBA để điều khiển tự động chọn 1 đối tượng trong slicer, cụ thể là đối tượng thứ 3 trong danh sách các đối tượng bên trong 1 slicer có tên là Slicer_ModuleID_Export.
Lỗi có thể do nguyên nhân: slicer của bạn có ít hơn 3 đối tượng. Nên gặp lỗi khi chọn đối tượng thứ 3.
Bạn cần đếm số lượng item bên trong slicer này trước, xét trường hợp vitem có lớn hơn .SlicerItems.Count hay không (trước khi thực hiện việc chọn đối tượng)
Mình có test thử code này trên 1 pivot table sử dụng slicer nhiều hơn 3 đối tượng thì hoạt động bình thường.
Tôi có 6 cái máy, gọi là Module, có số từ 1 đến 6 (Ví dụ: Module 1 thì mã ID là 1, khi đó trên Slicer có Tiêu đề là Module, còn các lựa chọn sẽ là 1, 2, 3, 4, 5, 6). Muốn dùng VBA để điều khiển tự động chọn 1 đối tượng trong slicer (tức là chọn 1 máy) để xuất liệu từ Pivot Table (được tạo từ Data Model của Power Pivot, sử dụng Power Query để tạo dữ liệu cho Power Pivot).
Cũng tìm hiểu thông tin là nó khác với các Slicer được tạo từ bảng dữ liệu đơn thuần, nó gọi là OLAP hay CUBE Function. Do kiến thúc hạn chế nên tôi chưa hiểu được.
Mong Thầy giúp đỡ.
Phần nội dung câu hỏi của bạn hiện vượt ngoài phạm vi có thể hỗ trợ (do dùng power query, power pivot nên phương thức làm việc khác nhiều so với làm excel thuần túy kết hợp VBA).
Thông thường phương pháp làm việc là:
- Cách 1: Sử dụng VBA để gom dữ liệu từ nhiều file (nhiều nguồn) vào 1 file, sau đó xử lý dữ liệu trên 1 file đó.
- Cách 2: Sử dụng Power Query để kết nối dữ liệu, sau đó kết hợp power pivot để làm ra báo cáo.
Với cách thứ 2 thì thường không dùng VBA mà chỉ hoàn toàn dựa trên 2 bộ công cụ power query và power pivot thôi (hoặc lên power BI).
Sử dụng lập trình trong M-code (của power query) chứ không dùng VBA.
Do đó bạn có thể xem xét điều chỉnh lại phương pháp làm việc. Hiện hướng đi của bạn là theo hướng sử dụng power BI, không sử dụng nhiều tới VBA. Với hướng này thì bạn tìm hiểu về công cụ Power BI desktop, M-code sẽ tốt hơn.
Cảm ơn Thầy về định hướng xử lý dữ liệu.