Chào mọi người, mình đang làm một đoạn code VBA để tự động hóa việc xử lý dữ liệu trên nhiều sheet. Đại khái là code sẽ duyệt qua từng sheet, kiểm tra nếu sheet đó có tên chứa 'Data' thì sẽ sao chép dữ liệu từ sheet đó sang một sheet tổng hợp. Tuy nhiên, mình gặp phải lỗi 'Object variable or With block variable not set', thường là khi mình gọi đến một biến đối tượng mà nó chưa được gán giá trị.
Cụ thể, đoạn code của mình có phần như sau:
Dim ws As Worksheet
Dim wsTarget As Worksheet
Set wsTarget = ThisWorkbook.Sheets("Summary")
For Each ws In ThisWorkbook.Sheets
If InStr(ws.Name, "Data") > 0 Then
' Sao chép dữ liệu từ ws sang wsTarget
ws.UsedRange.Copy wsTarget.Cells(Rows.Count, "A").End(xlUp).Offset(1, 0)
End If
Next ws
Mình nghi ngờ lỗi nằm ở chỗ ws chưa được gán giá trị khi ws.UsedRange.Copy được gọi. Nhưng mình đã dùng For Each ws In ThisWorkbook.Sheets rồi mà?
Có cao nhân nào chỉ giúp mình cách khắc phục lỗi này hoặc chỉ ra chỗ sai trong logic của mình không ạ? Mình cảm ơn nhiều!