Đặt tên vùng trong VBA

  • Thread starter thanhlongcom
  • Ngày gửi
T

thanhlongcom

Thành viên sơ cấp
9/6/06
6
0
0
Hà Nội
#1
Mong pàkonkopác giúp đỡ, ActiveWorkbook.Names.Add Name:="NgaySinhBe", RefersToR1C1:= _ "= sheet 1!R3C11" Làm thế nào để sheet 1 trở thành động? VD: nếu đổi tên sheet 1 thành sheet 2 lập tức anh chàng Excel sẽ không thực hiện được đúng công việc. Mong các pác giúp đỡ nhé.
 
B

Bình_OverAC

Over Abnormal / Crazy
14/5/04
845
7
18
36
Nha Trang
#2
Nếu bác đổi tên sheet sau khi chạy Marco thì hỏng có vấn đề gì phải bàn vì khi đó tên đó sẽ tự động đổi theo.
Bác có thể mở cửa sổ VBA để xem sheet đó tên gì (tên đối tượng, mặc định do Excel đặt, có thể sửa lại theo ý muốn) Thông thường tên đó sẽ nằm trước tên hiển thị, Xem hình:

proxy.php?image=http%3A%2F%2Fi46.photobucket.com%2Falbums%2Ff110%2FBinhpublic%2FEFC%2Ftensheet.jpg&hash=b758b8edc61c229ecbc283540cfcaced


Câu lệnh đặt tên vùng của bác có thể được viết như sau:
ActiveWorkbook.Names.Add "Ngaysinhbe", Sheet1.Range("K3")

"K3" --> R3C11
 
Đào Việt Cường

Đào Việt Cường

Moderator
22/11/05
400
3
18
Khánh Hòa
#3
Dear Bình_OverAC,
------------------
Hình như Bình_OverAC chưa hiểu ý của thanhlongcom rồi. Theo mình hiểu thì thanhlongcom muốn trong "= sheet 1!R3C11" thì sheet 1 là một tham số, và muốn thay đổi sheet 1 thành sheet nào cũng được. Nếu đúng ý của thanhlongcom như vậy thì đây là cách cải tiến vĩ lệnh macro. Giả sử bạn có thủ tục macro như sau
Thủ tục ban đầu nói:
Sub SetRefToName ()
ActiveWorkbook.Names.Add "Ngaysinhbe",RefersToR1C1:= "= sheet 1!R3C11"
End Sub
và sau đây là thủ tục cải tiến:
Thủ tục cải tiến nói:
Sub SetRefToName (strSheetName as String)
ActiveWorkbook.Names.Add "Ngaysinhbe", RefersToR1C1:= "=" & strSheetName & "!R3C11"
End Sub
Lúc này strSheetName đóng vai trò là một tham số kiểu chuỗi do bạn đưa vào. Lưu ý đây là chuỗi tên sheet trên Workbook hiện hành (ActiveWorkbook) vì bạn không chỉ ra worksheet một cách tường minh. Do vậy bạn phải có thủ tục xử lý trong trường hợp tên worksheet truyền vào không tồn tại hoặc không có trong ActiveWorkbook.
 
B

Bình_OverAC

Over Abnormal / Crazy
14/5/04
845
7
18
36
Nha Trang
#4
Theo em hiểu thì hiện tại anh thanglongcom sử dụng record macro để lưu lại câu lệnh đặt tên. Nhưng sau khi lưu xong anh có mong muốn đổi tên sheets sau khi đã chạy macro, hoặc có thể macro này chạy tương đối thường xuyên cho nên anh Thanglongcom sợ rằng sau khi mình đổi tên sheet thì có thể bị gây ra nhầm lẩn (chương trình nhầm lẩn) vậy nên em mới đề nghị dùng tên sheet mà Excel quản lý thay vì tên thể hiện để tránh việc sau khi đổi tên thể hiện thì câu lệnh không chạy được.
Em chỉ muốn nói cho rõ hơn về cái sự hiểu của em thôi. Chắc là cũng cần nhờ anh thanglongcom giải thích cho rõ hơn anh nhỉ
 

Thành viên trực tuyến

  • lepvanthanh33

Xem nhiều