2017-11-28 6 views
0

私はVBAを初めて使い、数日前に学習を始めました。私はExcelのVBAには、このインデックス/マッチ機能を変換しようとしているvbaの1つのファイルから別のファイルにインデックス一致を使用する方法

=INDEX('[039.xls]Sales Ledger Outstanding Invoic'!$D:$D,MATCH(D2,'[039.xls]Sales Ledger Outstanding Invoic'!$E:$E,0)) 

これは私がこれまでに出てくるものです:

Dim E As Long, f As Long, g As Long 
    Set tempWB = Workbooks.Open("C:\EDI\SLT report\039.xls", True, True).Worksheets("Sales Ledger Outstanding Invoic").Range("D2:D100") 
    Set dataWB = Workbooks.Open("C:\EDI\SLT report\039.xls", True, True).Worksheets("Sales Ledger Outstanding Invoic").Range("E2:E100") 
    E = Cells(Rows.Count, "E").End(xlUp).Row 
    g = 1 
    For f = 2 To E 
     If IsEmpty(Cells(f, "D")) = False Then 
      Cells(f, "D") = Application.WorksheetFunction.Index(tempWB, Application.WorksheetFunction.Match(A2, dataWB, 0)) 
      g = g + 1 
     End If 
    Next f 

しかし、このコードは私に

を与えます

下付き文字範囲外

誰かが私にそれを解決するのを手伝ってもらえますか?おかげ

+0

エラーがスローされますどのようなライン?ワークシート名に 'Invoic'に' e'がないことに注意してください。 – BruceWayne

+0

@BruceWayne:この行は、 'Cells(f、 "D")= Application.WorksheetFunction.Index(tempWB、Application.WorksheetFunction.Match(A2、dataWB 、0)) '。 –

答えて

0

はあなたが取得しているエラーは、このコード行に関連していないようですが、あなたはこれを試してみるかもしれません:

Cells(f, "D") = Application.WorksheetFunction.Index(tempWB, Application.Match(Range("A2"), dataWB, 0)) 
+0

名前に「e」は関係ありません。また、OPはおそらく、ワークブックとワークシートが入っている範囲を限定したいと思うでしょう。 – BruceWayne

+0

同じ行に「型の不一致」というエラーが表示される –

+0

Application.Matchを使用し、Application.WorksheetFunction.Matchを使用していないことを確認してください。何らかの奇妙な理由のために、それは適切に機能しません。 – tlemaster

関連する問題