ついでにラベルも、後から設置してみる(ユーザーフォーム)

昨日は、ユーザーフォーム上に配置したコマンドボタンでカレンダーを作成したうえで、ボタンの文字等を曜日や勤休区分で色分けしてみた。
infoment.hatenablog.com

現状、大分カレンダーっぽくなってきた。だが、まだ重要な情報が欠落している。

  • どの列が何曜日?
  • そもそも、何年何月なの?

そこで今回は、上記情報の追加に挑戦してみる。
f:id:Infoment:20181127223448p:plain
今回追加する情報は、以下の通りとした。

  1. 「日~土」の表示
    ※日曜日は赤色、土曜日は青色とする。
  2. 「YYYY年MM月」の表示
  3. 上記は全て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

実行した結果は、以下の通り。
f:id:Infoment:20181127224141g:plain

単月のカレンダーとしては、大体完成だ。しかしここまでくると、翌月や前月への切り替えもやってみたくなる。さて、どのようにしてやったものか。

ということで、もう少しだけ迷走が続きます。

参考まで。