- 帖子
- 1447
- 主題
- 40
- 精華
- 0
- 積分
- 1471
- 點名
- 0
- 作業系統
- Windows 7
- 軟體版本
- Excel 2010 & 2016
- 閱讀權限
- 50
- 性別
- 男
- 來自
- 台灣
- 註冊時間
- 2020-7-15
- 最後登錄
- 2025-5-5
|
10#
發表於 2022-12-27 11:07
| 只看該作者
本帖最後由 Andy2483 於 2022-12-27 11:10 編輯
再次謝謝 准提部林前輩指導
按鈕註解:
按按鈕後結果:
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 (猜的!)
'DateSerial 函數
'https://learn.microsoft.com/zh-tw/office/vba/language/reference/user-interface-help/dateserial-function
'ListIndex 屬性,識別 ListBox 或 ComboBox 中目前選取的專案。
'https://learn.microsoft.com/zh-tw/office/vba/language/reference/user-interface-help/listindex-property
Y2 = DateAdd("m", 1, Y1) - 1
'↑令Y2這日期變數是 DateAdd(m換算的天數:28、29、30或31,1m,Y1變數日期為基準日)(yyyy/m/d)(月尾日)
'https://learn.microsoft.com/zh-tw/office/vba/language/reference/user-interface-help/dateadd-function
Y0 = Y1 - (Y1 - 1) Mod 7
'↑令Y0是 [Y1變數(月初日) - Y1變數(月初日)的前一天 除7 的餘數(先除出餘數再相減)] 的日期
'這是要算月曆的第一天
For i = 1 To 42
'↑設順迴圈!i從1到42
Y3 = Y0 + i - 1
'↑令Y3這日期變數是 月曆的第一天+i迴圈數 -1
Fb = True
'↑令Fb這通用變數是 布林值 True
Fs = 12
'↑令Fs這通用變數是 12
Fu = False
'↑令Fu這通用變數是 布林值 False
Fc = &H80000012
'↑令Fu這通用變數是 Windows 按鈕上的文字顏色代號
'系統顏色常量
'搜尋 VBA 系統顏色常量
Bc = &H8000000F
'↑令Bc是 BackColor 屬性的值設定為 Windows 表單中的預設值
'https://learn.microsoft.com/zh-tw/office/vba/api/visio.viewer.backcolor
If Y3 Mod 7 < 2 Then Fc = &HFF
'↑如果Y3日期變數除7後的餘數 <2 ,就令Fu這通用變數是 255
'https://learn.microsoft.com/zh-tw/office/vba/language/reference/user-interface-help/hex-function
If Y3 < Y1 Or Y3 > Y2 Then
'↑如果Y3日期變數 < Y1日期變數(月初日) 或 Y3日期變數 >Y1日期變數(月尾日),
Fb = False
'↑令Fb這通用變數是 布林值 False
Fu = True
'↑令Fu這通用變數是 布林值 True
Fs = 11
'↑令Fs這通用變數是 11
Bc = &H808080
'↑令Bc這通用變數是 Windows 系統顏色代號(灰色的)
End If
With UserForm2("D" & i)
'↑以下是關於UserForm2 42個日期按鈕的程序
.Font.Bold = Fb '粗體
.Font.Size = Fs '字體大小
.Font.Underline = Fu '非本月-加底線
.ForeColor = Fc '字體顏色
.BackColor = Bc '背景顏色
.Caption = Day(Y3)
'↑令按鈕顯示文字是 Day()擷取Y3日期變數 日數字
.ControlTipText = Format(Y3, "yyyy/mm/dd")
'↑令按鈕註解是 Y3日期變數以 yyyy/mm/dd 顯示
'ControlTipText 屬性
'https://learn.microsoft.com/zh-tw/office/vba/language/reference/user-interface-help/controltiptext-property
End With
Next i
UserForm2.Caption = " " & CB_Yr.Value & "年" & CB_Mth.Text
'↑令UserForm2標題是 空白字元連接 CB_Yr下拉式清單方塊值連接 "年" ,最後連接 CB_Mth下拉式清單方塊值
End Sub
Sub 相反的_十六進位()
MsgBox &HFF
MsgBox &HA
MsgBox &HAA
End Sub
Private Sub D1_Click()
xDate = D1.ControlTipText
'↑這裡xDate = D2.ControlTipText 需要改為,xDate = D1.ControlTipText
Unload Me
End Sub
~~~
Private Sub D42_Click()
xDate = D42.ControlTipText
Unload Me
End Sub |
|