農林漁牧網

您現在的位置是:首頁 > 畜牧業

Excel vba 日期選擇框

2022-04-16由 江覓易見 發表于 畜牧業

窗體選擇器長什麼樣

文/江覓

Excel vba 控制元件裡的日期選擇一直是個很大問題,為了解決選擇日期的麻煩,做了一個窗體日期選擇框。

利用無標題欄窗體顯示日期,選擇後日期自動新增到文字框內,或者新增到任何要新增的地方。

下面介紹一下如何用無邊框窗體制作日期選擇框,也可以的任何窗體中呼叫此模組。

Excel vba 日期選擇框

雙擊TextBox文字對話方塊調出日期選擇表單,可以選擇年和月份,日曆自動切換。

Excel vba 日期選擇框

其實,以前一直想做這樣一個日期選擇,但是一直不能掌握相關的程式設計方法,經過分析和逐步除錯,結果做了出來,以後可以對程式設計中的日期選擇更加友好了。

Excel vba 日期選擇框

過程中遇到一些問題,總是難免的,但是遇到問題後如何解決,才是需要認真思考的內容。其實我對實現這樣的功能是不報希望的,並不能確定可以做出來,但是未如我所願,結果做了出來,這也激勵了我在下一步的學習當中,要有所改進對希望的想象。

Excel vba 日期選擇框

其實還有一些沒有完善的地方,比如窗體顯示位置還沒有定位,由於時間關係,沒有深入研究,可能目前不在我的認知範圍,所以也沒有做好定位。

Excel vba 日期選擇框

參考學習程式碼

“滑鼠單擊過程函式”

Private Sub Cb_Change()

Dim Y As Integer, d As Date, oneday As Integer, m As String

Y = Cb。Parent。Cyear。Value

d = VBA。CDate((Y & “/” & Cb。Value & “/01”))

oneday = VBA。Weekday(d)

m = “Mo” & oneday

Dim e As Integer

Dim lArrobj(1 To 42)

Dim Lobj As Object

e = 1

For Each Lobj In Cb。Parent。Controls

If TypeName(Lobj) = “Label” Then

If VBA。Len(Lobj。Name) = 3 Then

If VBA。CInt(VBA。Mid(Lobj。Name, 3, 1)) = e Then

Set lArrobj(e) = Lobj

e = e + 1

End If

Else

If VBA。Val(VBA。Mid(Lobj。Name, 3, 2)) = e Then

Set lArrobj(e) = Lobj

e = e + 1

End If

End If

End If

Next Lobj

Dim i As Integer

Dim onex As Integer, endx As Integer

Select Case VBA。CInt(Cb。Value)

Case 1, 3, 5, 7, 8, 10, 12

endx = 31

Case 4, 6, 9, 11

endx = 30

Case 2

If Y Mod 4 = 0 And Y Mod 100 <> 0 Then

endx = 29

Else

endx = 28

End If

End Select

endx = endx + oneday - 1

onex = oneday

End Sub