Hướng dẫn cách tạo menu liên kết nhiều chức năng trong Excel bằng VBA

Để có thể liên kết dữ liệu trong Excel, chúng ta thường sử dụng chức năng Hyperlink, hàm Hyperlink. Tuy nhiên những chức năng này chỉ đơn thuần làm một công việc là dẫn link để liên kết tới đích đến. Trong một vài trường hợp chúng ta muốn kết hợp thêm nhiều chức năng khác cùng trong 1 đường link, ví dụ như link tới 1 sheet ẩn, link tới 1 vị trí đã bị ẩn thì cách làm trên không đáp ứng được yêu cầu. Vậy chúng ta hãy cùng tìm hiểu giải pháp là sử dụng VBA để tạo MENU liên kết nhiều chức năng.

Quy trình liên kết dữ liệu

Trước khi đi vào thực hiện viết code trong VBA, chúng ta nên làm quen với việc mô tả quy trình công việc cần làm trước, khi đó việc viết code, tổ chức lệnh trong VBA cũng trở nên rõ ràng hơn, dễ hiểu hơn.

Quy trình liên kết dữ liệu có thể được mô tả như sau:

1. Link đến

Mục đích chính là CHỌN tới địa chỉ đích. Tại địa chỉ đích này sẽ bao gồm:

  • Tên sheet
  • Ô / vùng ô nào trong sheet đó
  • Những chức năng khác kèm theo (nếu có)

Trong nội dung này, chú ý  một số nguyên tắc sau:

  • Nếu Sheet đang ẩn thì phải mở ẩn trước, sau đó mới chọn tới Sheet đó được.
  • Nếu ô đang ẩn thì phải mở ẩn trước, sau đó mới chọn tới ô đó được.
  • Nếu không nói cụ thể ô nào trong Sheet thì vẫn có thể chọn tới Sheet đó được
  • Nếu Sheet không tồn tại thì liên kết sẽ lỗi

2. Link quay lại

Khi tạo liên kết, chúng ta lưu ý khi có link dẫn đi thì cần có link để quay trở lại. Việc này sẽ giúp liên kết đảm bảo đường đi của liên kết có tính 2 chiều, giúp việc đi đến – quay trở lại được thực hiện dễ dàng.

Việc tạo link quay trở lại cũng dựa trên nguyên tắc giống Link đến, nhưng link quay trở lại có thể kèm theo các chức năng như ẩn sheet đích, ẩn các ô đang chọn. Khi đó chúng ta lưu ý về trình tự thực hiện để tránh xung đột.

Cách viết lệnh liên kết đa chức năng trong VBA

Sau khi đã nắm được quy trình rồi, chúng ta mở cửa sổ VBA, tạo mới 1 Module và thực hiện viết các Sub liên kết.

Nếu bạn chưa biết cách mở cửa sổ VBA thì có thể tham khảo bài viết sau:

Bắt đầu với Excel Macros và lập trình VBA

Tạo link đến trong VBA

Ví dụ chúng ta có một file Excel, trong đó gồm các Sheet:

  • MENU: Nơi quản lý danh sách các Sheet cần Liên kết.
  • Create: mục đích để tạo mới 1 phiếu Ủy nhiệm chi (UNC)
  • Data: mục đích để quản lý danh sách các phiếu UNC
  • UNC: Để in Ủy nhiệm chi
  • DS_NguoiChuyen: Danh sách người chuyển tiền
  • DS_NguoiNhan: Danh sách người nhận tiền

Trong Sheet MENU, chúng ta sẽ tổ chức các link như sau:

Trong đó sheet Create đã được ẩn đi, nhưng chúng ta có thể gọi ra sheet này chỉ với thao tác bấm vào dòng Tạo mới Ủy nhiệm chi.

Cách thực hiện như sau:

Bước 1: Tạo các Shapes hình chữ nhật, trong mỗi shape sẽ viết tên tương ứng với các địa chỉ cần link.

Tham khảo: Hướng dẫn thao tác với các đối tượng đồ họa trong Excel

Trong các Shape này chúng ta chỉ cần lấy  tên đường link, còn màu của shape, đường viền chúng ta sẽ loại bỏ đi (No Fill, No Line)

Bước 2: Trong Module vừa tạo (trong cửa sổ VBA) tạo Sub để liên kết cho từng Shape

Ví dụ: Sub Link_Create_UNC  để liên kết tới Sheet Create như sau:

Trong đó:

  • Sheet2 là Code Name của sheet Create
  • Sheet2.Visible là thuộc tính ẩn/hiện của Sheet, trong đó chúng ta chọn xlSheetVisible để cho sheet đó được hiện ra (nếu bị ẩn thì sẽ hiện)
  • Sheet2.Select là thuộc tính lựa chọn, điều này có nghĩa là chọn tới Sheet2 sau khi sheet đó đã ở chế độ hiện

Bước 3: Gán Macro cho Shape Tạo mới UNC

Tại Shape Tạo mới UNC trên MENU, chúng ta bấm chuột phải rồi chọn Assign Macro, chọn tới macro Link_Create_UNC vừa tạo được ở bước 2

Bây giờ chúng ta thử bấm vào Shape đã gán macro sẽ thấy macro được thực hiện: Sheet Create được hiện ra trên thanh Sheet Tab và đồng thời chọn tới Sheet này. Giao diện sheet tạo mới UNC như sau:

Tiếp tục như vậy chúng ta sẽ tạo liên kết tới từng Sheet theo các Shape trong MENU

Tạo liên kết quay trở lại MENU

Tương tự với liên kết đến các Sheet, chúng ta cũng thực hiện các bước như sau:

Bước 1: Tạo Shape cho lệnh quay trở về MENU, ví dụ Shape có chữ Đóng trong sheet Create

Bước 2: Tạo sub Link_MENU như sau:

Trong đó:

  • AciveSheet là sheet đang hoạt động, đang mở. Tại Sheet đang làm việc chúng ta sẽ đặt lệnh quay trở lại MENU
  • ActiveSheet.Visible = xlSheetHidden tức là ẩn sheet đang hoạt động đi. Khi quay trở lại MENU đồng thời chúng ta sẽ ẩn sheet đó đi
  • Sheet7 là code name của sheet MENU
  • Sheet7.select là chọn tới Sheet 7 (MENU)

Bước 3: Gán Macro cho Shape thực hiện lệnh đóng UNC

Như vậy là chúng ta đã có thể hoàn tất một vòng đường link dữ liệu trong VBA rồi. Các bạn có thể thực hành thêm cho các sheet khác bằng cách tải file mẫu tại địa chỉ: http://bit.ly/2DKiTUI

Chúc các bạn thành công!

Xem thêm:

Hướng dẫn sử dụng Hyperlinks liên kết dữ liệu hiệu quả

Sử dụng Hyperlink trong Excel làm menu di chuyển


Tác giả: duongquan211287

· · ·

Khóa học mới xuất bản