Tạo mục lục tự động theo tên các sheet - Tạo Hyperlink tự động cùng hàm BS_SHEETS

Liên hệ QC

Nguyễn Duy Tuân

Nghị Hách
Thành viên danh dự
Tham gia
13/6/06
Bài viết
4,650
Được thích
10,138
Giới tính
Nam
Nghề nghiệp
Giáo viên, CEO tại Bluesofts
TẠO MỤC LỤC TỰ ĐỘNG THEO TÊN SHEET
Lần đầu mình làm ví dụ về hàm BS_SHEETS để tự động lấy ra danh sách các sheet có từ lâu trong Add-in A-Tools nhưng hôm nay mới làm ví dụ phối hợp với hàm BS_VLOOKUP kết hợp VBA tạo Hyperlink để tạo ví dụ động đậy này. Hy vọng giúp được nhiều người.

(*) Trước khi thực hành ví dụ này các bạn phải cái Add-in A-Tools nếu chưa có. Tải tại đây
Hàm BS_SHEETS để lấy ra mảng danh sách tên các sheet trong file Excel đang mở
Hàm BS_VLOOKUP để hiển thị mảng giá trị ra sheet, có lọc tùy biến
=bs_Vlookup("*",bs_Sheets())

Nếu muốn hiển thị thêm cột số thứ tự
=bs_Vlookup("*",bs_Sheets(),{"RECNO()",1})
(số 1 là cột 1 trong mảng trả về bởi hàm bs_Sheets() )

Nếu muốn tạo Hyperlink trên cột số thứ tự để nhấp chuột vào mở sheet thì cần viết sự kiện OnAfterUpdate=Tên sự kiện
Tạo module, copy code tạo sự kiện với tên TaoHLinkSTT (cấu trúc tham số theo quy định). Bên trong code ta lập trình VBA tạo Hyperlink

Mã:
'Code VBA by Nguyen Duy Tuan - http://bluesofts.net
Sub TaoHLinkSTT(ByVal DataTable As Range)
    Dim Cell As Range, I As Long
    For I = 1 To DataTable.Rows.Count 'Chay tu dong 1-> dong cuoi cung
        Set Cell = DataTable.Cells(I, 1) 'Toa do tinh theo "DataTable"
        'Tao Hyperlink
        Cell.Hyperlinks.Add Cell, "", "'" & Cell.Offset(, 1).Value & "'!A1"
    Next I
    MsgBox DataTable.Address, , "OnAfterUpdate"
End Sub
'---------------------------------------------------------------

Công thức vừa tạo danh mục các sheet có hyperlink bây giờ viết như sau:

=bs_Vlookup("*",bs_Sheets(),{"RECNO()",1},,"OnAfterUpdate=TaoHLinkSTT")
 
Web KT
Back
Top Bottom