|
こんにちわ。
コード説明です。
Sub Test()
Dim Fi As Range, Ad As String, Ch As Boolean
Ch = True
With Worksheets("報告書")
'シート報告書のセルAL2の氏名をリストシートの2列目の氏名を検索する
Set Fi = Worksheets("リスト").Columns(2).Find(.Range("AL2"), , xlValue, xlWhole)
'氏名が一致したのがあったかを区分
If Fi Is Nothing Then
'有った場合
Ad = Fi.Address
'一致する指名が複数有った場合を想定してループにて確認
Do
Set Fi = Worksheets("リスト").Columns(2).FindNext(Fi)
'リストシートの一致した指名の隣のセル(C列)の日付と
'シート報告書のセルI3の日付が一致しているかを確認
If Fi.Offset(, 1).Text = .Range("l3").Text Then
'データを転記
.Range("I4").Resize(3).Value = Application.Transpose(Fi.Offset(, 2).Resize(, 3).Value)
.Range("I8").Value = Fi.Offset(, 5).Value
.Range("I10").Value = Fi.Offset(, 6).Value
'変数ChをFalseにしループを抜ける
Ch = False: Exit Do
End If
Loop Until Ad = Fi.Address
Else
'無かった場合End_Lenへ
GoTo End_Len
End If
End With
'変数Chの値がTrueならEnd_Lenへ
'(ここで変数ChがTrue場合は日付が一致したのが無かったことになる)
If Ch Then GoTo End_Len
Exit Sub
End_Len:
MsgBox "該当なし", vbInformation
End Sub
確認です。
シート報告書のセルの確認です
氏名=AL2 ですか?
日付=I3 ですか?
シートリストセルの確認です。
氏名=B列 ですか?
日付=C列 ですか?
|
|