Các bạn được tham khảo lập trình, cách thức add controls và cách tạo sự kiện cho các ActiveX Controls trên Sheet như TextBox, Frame, MultiPage (nguồn trong File Hướng Dẫn).
Option Explicit
Private WithEvents frmTextBox1 As MSForms.TextBox
Private WithEvents frmTextBox2 As MSForms.TextBox
Private WithEvents frmTextBox3 As MSForms.TextBox
Private WithEvents mtpTextBox1 As MSForms.TextBox
Private WithEvents mtpTextBox2 As MSForms.TextBox
Private WithEvents mtpTextBox3 As MSForms.TextBox
''******************************************************************************************************
''SHEET EVENT:
''******************************************************************************************************
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Target.Column = 2 And Target.Row > 10 And Target.Row < 21 Then
Run "CALENDAR.xlam!CalendarExit"
Run "CALENDAR.xlam!Calendar", Target
End If
End Sub
Private Sub Worksheet_Deactivate()
EraseFrameControlEvent
End Sub
''******************************************************************************************************
''CONTROL BELONG TO SHEET EVENT:
''******************************************************************************************************
Private Sub CommandButton1_Click()
Frame.Show
End Sub
Thiết kế Tổng đãi ngộ (Total Rewards) theo khung SHRM
Khóa học “Thiết kế Tổng phần thưởng (Total Reward) chuẩn khung SHRM” giúp bạn nắm vững toàn bộ hệ thống đãi ngộ theo chuẩn...
Xem khóa họcPrivate Sub TextBox1_MouseUp(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
Run "CALENDAR.xlam!Calendar", TextBox1
End Sub
Private Sub Frame1_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
CreateFrameControlEvent
End Sub
Private Sub MultiPage1_MouseMove(ByVal Index As Long, ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
CreateFrameControlEvent
End Sub
''******************************************************************************************************
''CREATE EVENT FOR SOME TEXTBOXES INTO FRAME ON SHEET EVENT:
''******************************************************************************************************
Sub CreateFrameControlEvent()
If frmTextBox1 Is Nothing Then
Set frmTextBox1 = Sheet2.Frame1.Controls("TextBox1")
Set frmTextBox2 = Sheet2.Frame1.Controls("TextBox2")
Set frmTextBox3 = Sheet2.Frame1.Controls("TextBox3")
Set mtpTextBox1 = Sheet2.MultiPage1.Pages(1).Controls("TextBox1")
Set mtpTextBox2 = Sheet2.MultiPage1.Pages(0).Controls("TextBox2")
Set mtpTextBox3 = Sheet2.MultiPage1.Pages(1).Controls("TextBox3")
End If
End Sub
Sub EraseFrameControlEvent()
Set frmTextBox1 = Nothing
Set frmTextBox2 = Nothing
Set frmTextBox3 = Nothing
Set mtpTextBox1 = Nothing
Set mtpTextBox2 = Nothing
Set mtpTextBox3 = Nothing
End Sub
''******************************************************************************************************
''CONTROL BELONG TO FRAME ON SHEET EVENT:
''******************************************************************************************************
Private Sub frmTextBox1_MouseUp(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
Run "CALENDAR.xlam!Calendar", frmTextBox1
End Sub
Private Sub frmTextBox2_MouseUp(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
Run "CALENDAR.xlam!Calendar", frmTextBox2
End Sub
Private Sub frmTextBox3_MouseUp(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
Run "CALENDAR.xlam!Calendar", frmTextBox3
End Sub
''******************************************************************************************************
''CONTROL BELONG TO MULTIPAGE ON SHEET EVENT:
''******************************************************************************************************
Private Sub mtpTextBox1_MouseUp(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
Run "CALENDAR.xlam!Calendar", mtpTextBox1
End Sub
Private Sub mtpTextBox2_MouseUp(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
Run "CALENDAR.xlam!Calendar", mtpTextBox2
End Sub
Private Sub mtpTextBox3_MouseUp(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
Run "CALENDAR.xlam!Calendar", mtpTextBox3
End Sub
''******************************************************************************************************
Một cải tiến nữa là trên Tab Home của dải Ribbon, tôi có thêm 1 Icon mặt cười (Happy Face) để tiện cho việc show lịch.
Với người lập trình khi sử dụng Calendar này lại thuận tiện hơn với cấu trúc giản tiện:
Run "CALENDAR.xlam!Calendar", Range("C5")
Run "CALENDAR.xlam!Calendar", TextBox1