|
▼heavenlycastle2003 さん:
こんにちは。
> Aのループを選択したほうがプログラム的にスマートなものになると
> 考えました。
> Aを選択します。
申し訳ないです、、、Bの方法で…。
コマンドボタンの名前を仮に左上段から「c1」「c2」とつけて行き、
日 月 火 水 木 金 土
c1 c2 c3 c4 c5 c6 c7
c8 c9 c10 c11 c12 c13 c14
…
…
c42
の様なフォームを作成します。
(c1、c2等はコマンドボタンです)
フォーム読み込み時のイベントに下記モジュールを書いて下さい。
Option Compare Database
Option Explicit
Private Sub Form_Load()
Call MakeCalender(2008, 5)
End Sub
Sub MakeCalender(CurrentYear As Long, CurrentMonth As Long)
Dim i As Long
Dim First_Day As Long '初日が何番目のコントロールか
Dim Last_Day As Long '末日が何番目のコントロールか
First_Day = Weekday(DateSerial(CurrentYear, CurrentMonth, 1))
Last_Day = DateDiff("d", DateSerial(CurrentYear, CurrentMonth, 1), _
DateSerial(CurrentYear, CurrentMonth + 1, 0)) + First_Day
'初日が入るまでは空白を代入
For i = 1 To First_Day - 1
Me.Controls("C" & i).Caption = ""
Next i
'初日から末日までは日付を代入
For i = First_Day To Last_Day
Me.Controls("C" & i).Caption = i - First_Day + 1
Next i
'末日が入るまで空白を代入
For i = Last_Day + 1 To 42
Me.Controls("C" & i).Caption = ""
Next i
End Sub
2008年5月度の表示ができれば成功ですね。
|
|