| 
    
     |  | ▼マナ さん: >▼VBA初心者 さん:
 >
 >>カレンダーには
 >>エクセルの年カレンダー(1つのタブで1か月)というものを使っております。
 >>表示されている日数は日付のみです。
 >
 >
 >γさんの回答のように、Day(d)で検索しなくて大丈夫?
 >本当に、シリアル値 CLng(d)で検索ができていますか。
 
 Day(d)で検索するマクロを考えてみました。
 ですが、これだとエラーは出ないものの正しく入力されませんでした。
 なぜ入力されないか教えていただきたいです。
 
 Sub カレンダー入力新規2()
 
 Dim ws1     As Worksheet
 Dim lastRow   As Long
 Dim rngCalendar As Range
 Dim rngFound   As Range
 Dim rngFirstcell As Range
 
 Dim A      As Long
 
 Dim h      As Long
 Dim i      As String
 Dim j      As Long
 Dim k      As Long
 Dim l      As String
 
 Set ws1 = Worksheets("Sheet1")
 lastRow = ws1.Cells(ws1.Rows.Count, "A").End(xlUp).Row
 
 For A = 1 To lastRow
 
 h = ws1.Cells(A, 1).Value '日付け
 i = ws1.Cells(A, 2).Value 'スケジュール
 j = Month(d)        '日付から月を抜く
 k = Day(d)         '日付から日を抜く
 
 
 If j = 1 Then
 Set rngCalendar = Worksheets(1 & " " & "月").Range("B3:H13")
 ElseIf j = 2 Then
 Set rngCalendar = Worksheets(2 & " " & "月").Range("B3:H13")
 ElseIf j = 3 Then
 Set rngCalendar = Worksheets(3 & " " & "月").Range("B3:H13")
 ElseIf j = 4 Then
 Set rngCalendar = Worksheets(4 & " " & "月").Range("B3:H13")
 ElseIf j = 5 Then
 Set rngCalendar = Worksheets(5 & " " & "月").Range("B3:H13")
 ElseIf j = 6 Then
 Set rngCalendar = Worksheets(6 & " " & "月").Range("B3:H13")
 ElseIf j = 7 Then
 Set rngCalendar = Worksheets(7 & " " & "月").Range("B3:H13")
 ElseIf j = 8 Then
 Set rngCalendar = Worksheets(8 & " " & "月").Range("B3:H13")
 ElseIf j = 9 Then
 Set rngCalendar = Worksheets(9 & " " & "月").Range("B3:H13")
 ElseIf j = 10 Then
 Set rngCalendar = Worksheets(10 & " " & "月").Range("B3:H13")
 ElseIf j = 11 Then
 Set rngCalendar = Worksheets(11 & " " & "月").Range("B3:H13")
 ElseIf j = 12 Then
 Set rngCalendar = Worksheets(12 & " " & "月").Range("B3:H13")
 End If
 
 
 Set rngFound = rngCalendar.Find(k, After:=rngCalendar(1), _
 LookIn:=xlValues, LookAt:=xlWhole, SearchOrder:=xlByRows, _
 MatchCase:=False, MatchByte:=False, SearchFormat:=False)
 
 
 If k = rngFound.Value Then
 Call setSchedule(rngFound.Offset(1, 0), l)
 
 Else
 Set rngFound = rngCalendar.FindNext(rngFound)
 
 If Not rngFound Is Nothing Then
 
 If d = rngFound.Value Then
 Call setSchedule(rngFound.Offset(1, 0), l)
 
 End If
 
 End If
 
 End If
 
 Next A
 
 End Sub
 
 Function setSchedule(r As Range, l As String)
 If r.Value = "" Then
 r.Value = l
 Else
 r.Value = r.Value & vbLf & l
 End If
 End Function
 
 
 End Function
 
 |  |