Hỏi: thêm một sheet vào workbook để code kèm theo chạy đúng yêu cầu. (1 người xem)

Liên hệ QC

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

ngoclinh28061991

Thành viên mới
Tham gia
24/9/13
Bài viết
31
Được thích
1
Xin các Thầy và các bạn giúp em.
Em có file Data_them1sheet.xls cho chạy code kèm theo thì đúng yêu cầu là: lọc dữ liệu các dòng khác 0 ở cột Max_Oc, sau đó chuyển dữ liệu các cột Step, Max_Oc,Avg_Oc,Text110 và Text114 sang Sheet1 (trong đó Sheet1 đã được tạo sẵn bằng tay trước khi chạy code).
Nhưng khi em chạy code trên với file Data, kèm theo lệnh: Sheets.Add After:=Sheets(Sheets.Count) ở ngay sau dòng Sub Macro1() ( ý em muốn là thêm một sheet tự động bằng code để ra kết quả giống như file trên.), thì chương trình báo lỗi.
Em nghĩ sai ở câu lệnh Sheets.Add After:=Sheets(Sheets.Count). nhưng em ko biết sửa bằng cách nào?
Xin mọi người giúp đỡ em ạ.
 

File đính kèm

Em học VBA bằng cách ghi macro ra rồi tự tìm hiểu code, nên còn nhiều vấn đề không thể tự giải quyết được. Ai biết câu trả lời xin vui lòng giúp em ạ?
 
Upvote 0
Em nghĩ sai ở câu lệnh Sheets.Add After:=Sheets(Sheets.Count)

câu lệnh này không sai, vấn đề là nó tạo ra một sheet mới và tư động cấp cho một CodeName. cái này có thể là Sheet2, Sheet3, ... tùy tình huống.
trong code của bạn xài Sheet2.Cells(i, j) sẽ bị lỗi nếu CodeName của sheet mới tạo ra không phải là Sheet2

bạn cần phân biệt sự khác biệt giữa Ws.Name và Ws.CodeName. Name là cái bạn nhin thấy trên tab, có thể sửa trực tiếp. CodeName là cái bạn không thấy và có thể sửa trong edit mode. thường thì Name và CodeName ban đầu giống nhau Sheet1, Sheet2, ... nhưng rồi khi bạn đổi Name thì chúng khác nhau. chưa kể bạn delete sheet rồi lại add... thì không có gì bảo đảm chúng còn giống nhau nữa.

để xử lý lỗi bạn nêu có nhiều cách, cách đơn giản nhất là sửa trong code của bạn Sheet2 thành ActiveSheet. (vì khi gọi lệnh Sheets.Add thì sheet mới được tạo ra và kích hoạt luôn nên ActiveSheet chính là cái sheet mới đó)

giả sử với 1 file excel có sheet thứ nhất với Name và CodeNam đều là Sheet1
dùng CodeName bạn viết Sheet1.Cells(i, j) =, nhưng nếu dùng Name lại phải viết là Sheets("Sheet1").Cells(i, j) =

từ từ rồi sẽ quen thôi.
 
Upvote 0

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

Back
Top Bottom