投稿/コメントを表示します。

小川先生へ

サンプルコードを書いてくださってありがとうございます(*^^*)
いろんなコードを見て、動かしてみることはとても勉強になりますね。

「1枚のシートに1年分または所定の月の分だけのカレンダーを作成する」の
動画を見直して、Nyuryoku_Calendarをつくりなおしてみました。
Sub Nyuryoku_Calendar() ' ひと月分のカレンダーを作成する

    Dim d As Date
    Dim c As Long
    Dim m As Long
    
    m = Month(Range("A1").Value)
    Range("A1").NumberFormatLocal = "yyyy" & "年" & "m" & "月"
    d = Range("A1").Value
    c = 0
    Range("A1").CurrentRegion.Offset(0, 1).ClearContents 'データーを削除
    
    Do While m = Month(d)
        Range("B1").Offset(0, c).Value = Day(d)
        Range("B2").Offset(0, c) = WeekdayName(Weekday(d), True)
        c = c + 1
        d = DateAdd("d", 1, d)
    Loop
End Sub


小川先生がくださったヒントで

'[2] その月の月初日を日付型変数に格納。
'[3] DateAdd関数で一日づつ翌日の日付を調べる。

のところをどう書けばよいかわからず・・・
(調べてみてDateSerial関数を使うのかもしれないと思い試行錯誤したものの・・・
うまくつかいこなせずでした(+_+))

でも、このままではA1セルに1日以外の日付が入った場合、
カレンダーが月の途中からになってしまうので
イベントの方にも手を加えました(;^_^A
Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.Address = "$A$1" And IsDate(Target.Value) Then
        If Day(Target) = 1 Then ’A1セルに入った日付が1日だったら
            Nyuryoku_Calendar
        Else
            MsgBox "日付を1日にして入力し直してください"
            Exit Sub
        End If
    End If
End Sub

2017/02/20 09:44