Vâng!
Thưa các Quý vị, vào ddth tôi thấy nhiều câu hỏi về Office VBA quá, quả thật cũng có khá nhiều người như tôi vẫn đang mò mẫm về Access, Excel... để làm các ứng dụng của mình vì mục đích nào đó - cho mình hoặc cho người khác...
Thiết nghĩ chúng ta có thể bắt đầu một chủ đề mới chuyên về Office VBA nhé, mỗi ngày một ví dụ mới về các thủ thuật.
Nếu Quý vị đồng ý thì chúng ta cùng đóng góp để tất cả đều có thể bắt đầu học từ nhau những điều mình chưa biết để công việc sẽ ngày càng tiến triển...
Nói thế thôi vậy không thì lại bảo là nhiều lời.
'//////////Now...Start.......
Hôm nay tôi bắt đầu với việc đưa thêm các mục menu mới vào Excel và tự động xoá khi thoát khỏi Excel nhé....
' Đoạn mã sau đây sẽ tạo ra một thực đơn mới trong thực đơn hệ thống của Excel, đồng thời tạo ra một thực đơn thấp hơn, khi nhấn vào sẽ thực thi một động tác ta quy định....
Chép đoạn mã nguồn sau vào Code Module của Thisworkbook nhé
'================================================
Option Explicit
Private Sub Workbook_Open()
' Để tạo được thực đơn, bạn phải tham chiếu đến thư viện đối tượng của
' Office - nhấn Tools chọn Reference và tìm thư viện đối tượng của Office
Dim icmb As CommandBar
Dim cbCtrPar As CommandBarControl, cbCtrChild As CommandBarControl
Set icmb = Application.CommandBars("Worksheet Menu Bar")
' Đoạn này tớ làm để tắt thực đơn hệ thống mà thôi... nay chẳng dùng nữa
'For Each cbCtrPar In iCmb.Controls
' cbCtrPar.Visible = False
'Next
' Bắt đầu nhé
Set cbCtrPar = icmb.Controls.Add(msoControlPopup, , , , True)
' Đặt tên và gán đuôi cho thực đơn...
cbCtrPar.Caption = "Test"
cbCtrPar.Tag = "Created"
' Tạo thực đơn con cho thực đơn trên
Set cbCtrChild = cbCtrPar.Controls.Add(msoControlButton, 2091, , , True)
' Gán đuôi Tagf cho thực đơn để sử dụng sau này....
cbCtrChild.Tag = "Created"
' Bây giờ gán hành động cho thực đơn đây (ta phải có một hàm trong module mới được, nếu không, thì nó chẳng chạy đâu.
cbCtrChild.OnAction = "AssignmeNow"
cbCtrChild.Caption = "Okay here is the test"
Set icmb = Nothing
Set cbCtrPar = Nothing
End Sub
Private Sub Workbook_BeforeClose(Cancel As Boolean)
' Thủ tục này sẽ được kích hoạt khi đóng tài liệu, thực ra khi Excel thoát ra
' thực đơn vừa tạo sẽ bị xoá do ta đặt thuộc tính Temporary là true lúc
' tạo thực đơn ở phần trên
Dim cbCtrPar As CommandBarControl
Dim icmb As CommandBar
' Okay - ta phải tìm cái thực đơn vừa tạo và xoá nó nhé, bí quyết là
' thuộc tính tag ta đã đặt từ khi tạo thực đơn
Set icmb = Application.CommandBars("Worksheet Menu Bar")
'On Error Resume Next
For Each cbCtrPar In icmb.Controls
If cbCtrPar.Tag = "Created" Then
cbCtrPar.Delete
Exit For
End If
Next
' đoạn này để bật thực đơn hệ thống lại - nay cũng không dùng , hihi
'For Each cbCtrPar In iCmb.Controls
' cbCtrPar.Visible = true
'Next
Set cbCtrPar = Nothing
End Sub
'///////////////////Đưa đoạn code này vào một Module mới nhé/////////
Function AssignmeNow()
MsgBox "Hello Dear"
End Function
Bookmarks