2017-01-19 15 views
1

I以下のワークブックを持っている:値が一致するvbaを使用して別のワークブックから値を取得しますか?

マスターワークブック

Column E   Column G  Column J  Column V 
               Expecting 
12/12/2016  111    555  
12/12/2015  222    444 
12/12/2014  333    666 

私もワークブックが呼ばれているスレーブ:

スレーブワークブック

Column C  Column D  Column E  Column F   Column G 
111   555    12/12/2016      400 
222   444       12/12/2015  500 
333   666    12/12/2014      600 

マスターの各列の値の場合スレーブワークブック内のそれらと一致して、私は私のマスターの列vにスレーブから列Gの値をコピーしたいと思います。私は以下の基準をチェックすると、私のコードが動作する瞬間

:私は私のマスターワークブックに列Eの日付を確認したい場合は

Master     Slave  
Column G MATCHES  Column C 

Column J MATCHES  Column D 

しかし、スレーブ上の列Eに一致するには、私のコードが停止ワークブックワーキング。

Option Explicit 
Option Compare Text 

Private Sub Worksheet_SelectionChange(ByVal Target As Range) 
    Dim oCell As Range, oCell2 As Range, oCell3 As Range, oCell4 As Range, targetCell As Range 
    Dim ws2 As Worksheet 
    Dim lastRow As Long 

    If Target.Column = 22 And ActiveCell.Value = "Expecting" Then 

     If Not GetWb("Order Checker", ws2) Then Exit Sub 

     lastRow = Range("J" & Rows.Count).End(xlUp).Row 

     With ws2 
      For Each targetCell In Range("J6:J" & lastRow) 
       Set oCell = .Range("D1", .Cells(.Rows.Count, "D").End(xlUp)).Find(what:=targetCell.Value, LookIn:=xlValues, lookat:=xlWhole) 
       Set oCell2 = .Range("C1", .Cells(.Rows.Count, "C").End(xlUp)).Find(what:=targetCell.Offset(0, -3).Value, LookIn:=xlValues, lookat:=xlWhole) 
       Set oCell3 = .Range("F1", .Cells(.Rows.Count, "F").End(xlUp)).Find(what:=targetCell.Offset(0, -5).Value, LookIn:=xlValues, lookat:=xlWhole) 

       MsgBox oCell3 
       If Not oCell Is Nothing And Not oCell2 Is Nothing And Not oCell3 Is Nothing Then 


        Application.EnableEvents = False 
        targetCell.Offset(0, 12).Value = oCell.Offset(0, 3) 

        Application.EnableEvents = True 

       End If 



      Next 
     End With 


     End If 


End Sub 

Function GetWb(wbNameLike As String, ws As Worksheet) As Boolean 
    Dim wb As Workbook 
    For Each wb In Workbooks 
     If wb.Name Like "*" & wbNameLike & "*" Then '<-- check if workbook name contains "Depot Memo" 
      Set ws = wb.Worksheets(2) 
      Exit For 
     End If 
    Next 
    GetWb = Not ws Is Nothing 
End Function 

問題はこれをどうすることです:

はここに私のコードです

Set oCell3 = .Range("E1", .Cells(.Rows.Count, "E").End(xlUp)).Find(what:=targetCell.Offset(0, -5).Value, LookIn:=xlValues, lookat:=xlWhole) 

何らかの理由で、oCell3は、それが何を=しないと言います。これは私のコードは、結果を生成しないことが原因になっている

If Not oCell3 Is Nothing Then 

:oCell3はそうのような何もないではない場合

だから私はテストしていたとき。

私が間違っていることを誰かに教えてもらえますか?おかげ

+1

あなたは既にこの質問を投稿しませんか? – nightcrawler23

答えて

0

は、問題は、検索日付が本当Dateありながらws2日付で実際にString値であることが考えられます。あなたが使用することができ、この場合

Set oCell3 = .Range("F1", .Cells(.Rows.Count, "F").End(xlUp)).Find(what:=CStr(targetCell.Offset(0, -5)), LookIn:=xlValues, lookat:=xlWhole) 
+0

素晴らしい感謝 – user7375502

+0

あなたは歓迎です – user3598756

関連する問題