按按鈕 顯示UserForm1:
[attach]35661[/attach]
Private Sub TextBox1_MouseDown(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
'↑MouseDown、MouseUp 事件
'https://learn.microsoft.com/zh-tw/office/vba/language/reference/user-interface-help/mousedown-mouseup-events
'宣告變數:Button是短整數,Shift是短整數,X是單精度浮點數,Y是單精度浮點數
UserForm2.Show
'↑顯示名稱為 UserForm2 自訂表單
TextBox1.Text = xDate
'↑輸入窗文字顯示 xDate變數回傳的值
End Sub
Option Explicit
Dim i&
'↑宣告模組變數:i是長整數
Private Sub UserForm_Initialize()
'↑Initialize 事件,會在載入物件之後但顯示之前發生。
CB_Yr = Year(Date)
'↑令CB_Yr下拉式清單方塊顯示 以今天日期判斷出的 4碼西元年分
For i = 1 To 12
'↑設順迴圈!i從1到12
CB_Mth.AddItem Application.Text(i, "[DBNum1]d月")
'↑令CB_Mth下拉式清單方塊加入 迴圈數轉小寫月份文字字串的清單項目
'Text()會傳回指定之物件的格式化文字。 唯讀的 String
'[DBNum1]:中文小寫 ,[DBNum2]:中文大寫,大小寫要自己試才知道
Next i
For i = -20 To 20
'↑設順迴圈!i從-20到20
CB_Yr.AddItem CB_Yr + i
'↑令CB_Yr下拉式清單方塊加入 迴圈數加上CB_Yr值產生的41個年份文字字串的清單項目
Next i
'雖然增加了多個清單項目,但不影響一開始的顯示(以今天日期的年份)
CB_Mth = Application.Text(Date, "[DBNum1]m月")
'↑令CB_Mth下拉式清單方塊顯示 以今天日期判斷出的 小寫月份文字字串
Call Build_Calendar
'↑執行 Build_Calendar副程式
End Sub
Private Sub CB_Mth_Change()
'↑CB_Mth下拉式清單方塊_Change 事件
'https://learn.microsoft.com/zh-tw/office/vba/language/reference/user-interface-help/change-event
If UserForm2.Caption Like "*####*" Then Call Build_Calendar
'↑如果 UserForm2自訂表單 標題窗顯示文字 包含4個連續的數字!就執行 Build_Calendar副程式
End Sub
Private Sub CB_Yr_Change()
'↑CB_Yr下拉式清單方塊_Change 事件
If UserForm2.Caption Like "*####*" Then Call Build_Calendar
'↑如果 UserForm2自訂表單 標題窗顯示文字 包含4個連續的數字!就執行 Build_Calendar副程式
End Sub作者: Andy2483 時間: 2022-12-27 11:07
本帖最後由 Andy2483 於 2022-12-27 11:10 編輯
再次謝謝 准提部林前輩指導
按鈕註解:
[attach]35665[/attach]
按按鈕後結果:
[attach]35666[/attach]
Private Sub Build_Calendar()
Dim Y0 As Date, Y1 As Date, Y2 As Date, Y3 As Date, Fb, Fc, Fu, Fs, Bc
'↑宣告變數:(Y0,Y1,Y2,Y3)是日期變數,其他是通用型變數
Y1 = DateSerial(CB_Yr, CB_Mth.ListIndex + 1, 1)
'↑令Y1這日期變數是 DateSerial(yyyy,m,d) 組合出想要的西元年/月/日(yyyy/m/d)(月初日)
'CB_Mth.ListIndex + 1 的意思用猜的:CB_Mth下拉式清單方塊顯示值所在的清單索引位置,而其清單索引是0~11 (猜的!)