|
Jaka さん ありがとうございました。
動作に感動しました。
少し改良しTargetの行を下へ移動し、
A2に年、B2に月を入れることにしました。
それで自動でRange("A9:A39")に日付を入れようと考えましたが
マクロが動作しません。
アドバイスをお願いいたします。
Private Sub Worksheets_Change(ByVal Target As Range)
Dim themonth As Integer
Dim theyear As Integer
Dim days As Integer
With Target
If IsEmpty(.Value) Then Exit Sub
If Not IsNumeric(.Value) Then Exit Sub
If .Count > 1 Then Exit Sub
End With
'入力セルがA2とB2の場合のみ処理する
If Target.Address = Range("A2").Address Or _
Target.Address = Range("B2").Address Then
'A2とB2に数値が入力してあれば、処理する。
If Range("A2").Value <> "" And Range("B2").Value <> "" And _
IsNumeric(Range("A2").Value) And IsNumeric(Range("B2").Value) Then
'前回の値をクリアする。
Range("A9:A39").ClearContents
'年のセル
theyear = Range("A2").Value
'月のセル
themonth = Range("B2").Value
'月の値が1〜12かをチェック
If themonth >= 1 And themonth <= 12 Then
With Range("A9")
'1ヶ月分の日付を生成する。
For days = 1 To Day(DateSerial(theyear, themonth + 1, 1) - 1)
.Offset(days - 1).Value = DateSerial(theyear, themonth, days)
Next
End With
Else
MsgBox "月の値は、1〜12を入力してください。"
Range("B2").Select
End If
End If
'以下、別にいらない機能?
If Target.Address = Range("A2").Address Then
Range("B2").Select
End If
If Target.Address = Range("B2").Address Then
Range("A2").Select
End If
'ここまで
End If
End Sub
|
|