エクセルVBAのFINDの質問です。
エクセルVBAのFINDの質問です。
シート1
A B C D
1 コード1 コード2 コード3 名 称
2 4 1 1
3 4 2 2
4 4 3 1
シート2
A B
1 コード1 名 称
2 1 名称1
3 2 名称2
やりたいことは、シート1のD列に、シート1のコード3をもとにシート2から名称を取得したいのです。
下記に記したプログラムだと最初のFINDNEXTは動くのですが、
2回目でエラーになってしまい、次を読んでくれません。
どなたか、ご教授頂けますでしょうか。
シート1の検索条件はコード1の"4"です。
シート1のコード1は重複キーで、一レコードずつ読んで行き、各レコード毎にシート2を読みたい
のです。
Dim シート1 As Worksheet
Dim シート2 As Worksheet
Dim obj As Object
Dim Lin As Integer
Dim mykey As Integer
Dim obj1 As Object
Dim Lin1 As Integer
Dim mykey1 As Integer
Dim st_Lin As Integer
Set シート1 = ThisWorkbook.Worksheets("シート1")
Lin = シート1.Cells(シート1.Rows.Count, 1).End(xlUp).Row
mykey = "4"
Set obj = シート1.Range("A1", "A" & Lin).Cells.Find(What:=mykey, _
LookIn:=xlValues, _
lookat:=xlWhole, _
SearchOrder:=xlByColumns)
If obj Is Nothing Then
MsgBox ("異常です")
Exit Sub
Else
st_Lin = obj.Row
Do Until obj.Row <> st_Lin
Set obj = シート1.Range("A1", "A" & Lin).FindNext(obj)
If obj Is Nothing Then
Exit Do
Else
Set シート2 = ThisWorkbook.Worksheets("シート2")
With シート2
Lin1 = .Cells(シート2.Rows.Count, 1).End(xlUp).Row
mykey1 = シート1.Cells(obj.Row, 3).Value
Set obj1 = .Range("A1", "A" & Lin1).Cells.Find
(What:=mykey1,LookIn:=xlValues,lookat:=xlWhole,SearchOrder:=xlByColumns)
If obj1 Is Nothing Then
MsgBox ("名称取得できませんでした")
Exit Sub
Else
シート1.Cells(obj.Row, 4).Value = .Cells(obj1.Row, 2).Value
End If
End With
End If
Loop
End If
お礼
ありがとうございます。 やってみましたがコンパイルエラーになりました~。 やはり参照設定をしないとダメなんだと思いますが何を設定したら良いのでしょうか。 すみません。