小規模老人保健施設の給食業務向けExcelVBA練習帳、給食帳票管理にVBAを活用、並べる日付 

Excel VBA

月の日数を知る

ある年度の指定した月の日数が何日あるか求め、その日数分繰り返す処理をします。

日数の基本的考え方。

■ 大の月(1,3,5,7,8,10,12)=31

■ 小の月(4,6,9,11)=30

■ 閏年の2月=29

■ 閏年以外の2月=28

プログラムで表現

'引数の月の日数を返す
Private Function nissuu(nenn As Integer, tuki As Integer)
    Dim tukisuu
    tukisuu = 0
    Select Case tuki
        Case 1, 3, 5, 7, 8, 10, 12
            tukisuu = 31
        Case 4, 6, 9, 11
            tukisuu = 30
        Case 2
            '4年に一度のうるう年なら29日
            If nenn Mod 4 = 0 Then
                tukisuu = 29
            Else
                tukisuu = 28
            End If
    End Select
    nissuu = tukisuu
End Function

上のコードは年度と月の数値を引数で受け取って、日数を返す関数ですね。

具体的な使い方は次の様にします。

カレンダーの数値部分

日数=nissuu(2023,8)

For i = 0 To 日数 – 1
‘月の数値8を書き込んだセルの一行下で一列右のセルから右方向に順に数値を書き込みます。
Cells(Target.row + 1, Target.Collum + i ) = i + 1
Next i

カレンダーの曜日部分

‘日付の合成
Dim hiduke As String
hiduke = nenn & “/” & tuki & “/” & r

‘曜日の設定
Dim youbi As String
youbi = Format(hiduke, “aaa”)
’ ”aaa” はhidukeに対応する曜日を返すFormat関数の定型句です

For i = 0 To 日数 – 1
‘月の数値8を書き込んだセルの一行下で一列右のセルから右方向に順に数値を書き
’ 更にその一行下に曜日を書き込みます。
Cells(Target.row + 1, Target.Collum + i ) = i + 1
Cells(Target.row + 2, Target.Collum + i ) = “(” & youbi & “)”   ’ 曜日を書き込む
Next i
こんな感じでどうでしょう。
実際のコードではこのコードとは少し違う書き方をしています。(まだVBAの経験値が低かったのです)
ダウンロードしたらAlt + F11でVBAエディターを開いてみてください。

ダウンロード

本プログラムはエクセル2013で作成しています。他のバージョンでは動作可能かはわかりません。また、最近(2022年以降)のエクセルではマクロを含んだネット経由のダウンロードファイルは動作しないようになっているようです(確認していません。)

下のカードからダウンロードしてください。

コメント

タイトルとURLをコピーしました