Thầy ơi cho mình hỏi khi minh khai bao biên đối tượng sheet 2 thành tên mới ví dụ tên là data, sau đó mình viết tiêp code ơ sub mới thì vân phải viêt sheet2.range mới ra kêt quả thay vi là data.range là sao ah
Việc khai báo biến chính xác thì sẽ dùng được như bạn nói. Ví dụ:
Dim sh as Worksheet
Set sh = Sheet2
sh.Range("A1").Value = ...
Khi khai báo biến worksheet thì cần chú ý:
- từ worksheet không có chữ s ở cuối
- phải có từ khóa Set + tên biến, vì là biến đối tượng nên phải set
Thấy ơi, mình hiểu câu hỏi trên của bạn này nhưng hiện tại là làm không ra,
Vd như la:
Sau khi minh làm đặt tên cho sheet 1 ok với code bên dưới
Sub vd01()
Dim n As Worksheet
Set n = Sheet1
n.Name = "data"
n.Range("C2:C8") = 5
End Sub
Mình muốn gán tiếp : mà nếu dùng Data.Range("d5").Value = m thì bị lỗi như bên dưới còn dùng Sheet1.Range("d5").Value = m thì ok,
Chào bạn bạn phải phân biệt rõ sheets name và code name nhé.
Việc dùng lệnh n.Name = "data" chỉ là đặt tên cho sheet, tên này thuộc về sheet-tab-name.
Còn khi bạn viết Data.Range("D5")... là đang viết cho code-name của Sheet. Nhưng file của bạn không có sheet nào có code name là Data.
Bạn xem lại quy tắc viết code cho đối tượng worksheet để phân biệt code-name với sheet-tab-name nhé.
Như trong ví dụ của bạn thì đoạn code dưới (vd02) phải viết là:
Sheets("Data").Range("D5").Value = m