昨日は、ユーザーフォーム上に配置したコマンドボタンでカレンダーを作成したうえで、ボタンの文字等を曜日や勤休区分で色分けしてみた。
infoment.hatenablog.com
現状、大分カレンダーっぽくなってきた。だが、まだ重要な情報が欠落している。
- どの列が何曜日?
- そもそも、何年何月なの?
そこで今回は、上記情報の追加に挑戦してみる。
今回追加する情報は、以下の通りとした。
- 「日~土」の表示
※日曜日は赤色、土曜日は青色とする。 - 「YYYY年MM月」の表示
- 上記は全てLabelとする。
追加の方法は、ボタンの場合と同じだ。そこで、ユーザーフォームのクリックイベントでジワジワとボタンを整列させた後、最後に下記を呼び出してラベルを追加することにした。
ユーザーフォーム
Private Sub SetLabel() Dim i As Long Dim myLabel As MSForms.Label ' 日曜日~土曜日 Dim Seq As Variant Seq = Array("日", "月", "火", "水", "木", "金", "土") For i = 1 To 7 Set myLabel = Me.Controls.Add("Forms.Label.1", _ "Label" & i, _ True) With myLabel .Left = Left_Start + ButtonSize / 4 + (i - 1) * ButtonSize .Top = Top_Start .Width = ButtonSize .Height = ButtonSize .Caption = Seq(i - 1) Select Case i Case 1: .ForeColor = &HC0 Case 7: .ForeColor = &HFF0000 End Select End With Next ' YYYY年MM月 Set myLabel = Me.Controls.Add("Forms.Label.1", _ "Label8", _ True) With myLabel .Left = Left_Start + ButtonSize / 4 .Top = Top_Start - ButtonSize .Height = ButtonSize .Caption = StrConv(Format(Date, "YYYY年MM月"), vbWide) End With End Sub
実行した結果は、以下の通り。
単月のカレンダーとしては、大体完成だ。しかしここまでくると、翌月や前月への切り替えもやってみたくなる。さて、どのようにしてやったものか。
ということで、もう少しだけ迷走が続きます。
参考まで。