Đặt tên vùng trong VBA

Thảo luận trong 'Ứng dụng Excel' bắt đầu bởi thanhlongcom, 19 Tháng sáu 2006.

4,185 lượt xem

  1. thanhlongcom

    thanhlongcom Thành viên sơ cấp

    Bài viết:
    6
    Đã được thích:
    0
    Nơi ở:
    Hà Nội
    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é.
     
    #1
  2. Bình_OverAC

    Bình_OverAC Over Abnormal / Crazy

    Bài viết:
    845
    Đã được thích:
    7
    Nơi ở:
    Nha Trang
    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:

    [​IMG]

    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
     
    #2
  3. Đào Việt Cường

    Đào Việt Cường Moderator

    Bài viết:
    400
    Đã được thích:
    3
    Giới tính:
    Nam
    Nơi ở:
    Khánh Hòa
    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
    và sau đây là thủ tục cải tiến:
    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.
     
    #3
  4. Bình_OverAC

    Bình_OverAC Over Abnormal / Crazy

    Bài viết:
    845
    Đã được thích:
    7
    Nơi ở:
    Nha Trang
    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ỉ
     
    #4

Chia sẻ trang này