2017-05-23 3 views
0

ブック内の各シートで同じ機能(別のExcelブックのテーブルからVLookupを外して)を実行しようとしています。私はVBAスクリプトを構築しているが、ループは機能していない。 VLookupは、私が行っているシート上で動作しますが、残りのサイクルは繰り返されません。VBAループのExcelブック内のすべてのシートのVlookupが機能していません

スクリプト:

Sub loop_through_all_worksheets() 

    Dim ws As Worksheet 
    Dim starting_ws As Worksheet 
    Set starting_ws = ActiveSheet 

    For Each ws In ThisWorkbook.Worksheets 
     Range("AE2").Select 
     ActiveCell.FormulaR1C1 = "=VLOOKUP(RC[-1], [Vendor.xlsx]AP210!C1:C2,2,FALSE)" 
     Range("AE2").Select 
     Selection.AutoFill Destination:=Range("AE2:AE49") 
     Range("AE2:AE49").Select 
     Columns("AE:AE").Select 
     Selection.Copy 
     Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, _ 
           SkipBlanks:=False, Transpose:=False 

     starting_ws.Activate 
    Next 
End Sub 

注: 'Vendor.xlsxは' 第二のファイルであるルックアップテーブルです。

私はこれを私の独自のVLookupスクリプトを作成してループスクリプトに追加しました。

タブと、各タブの名前の数がvaiableある

ループが機能しない理由上の任意の入力?私は完全にこれを根拠にしていませんか?

は助けを

+0

あなたは 'ThisWorkbook'のすべてのワークシートをループしていますが、外部ワークブックには1つの 'VLOOKUP'を実行していますか?毎回同じ「VLOOKUP」のように見えます。そうであれば、ループの外側に移動することができます。また、あなたは[SelectとActivateを使う必要はありません](https://stackoverflow.com/documentation/excel-vba/1107/vba-best-practices/9292/avoid-using-selectoror -activate#t = 201705232001577159123) – PeterT

答えて

1

はブロックと.Select.Activate

使用を避け、ループオブジェクトと親ワークシートを設定し、事前に、ありがとうございます。

Sub loop_through_all_worksheets() 

    Dim ws As Worksheet 
    Dim starting_ws As Worksheet 
    Set starting_ws = ActiveSheet 

    For Each ws In ThisWorkbook.Worksheets 
     With ws.Range("AE2:AE49") 
      .FormulaR1C1 = "=VLOOKUP(RC[-1], [Vendor.xlsx]AP210!C1:C2,2,FALSE)" 
      .Value = .Value 
     End With   
    Next 
    starting_ws.Activate 
End Sub 
+0

Scott、スクリプトをありがとうございます。私はあなたが提案したことを使用し、それは一度働いた。私はそれをマクロに保存し、テストするためにreranして、今はxlsbファイルでvlookupを実行していますが、意図したファイルではありません。 理由は何ですか? –

+0

考慮中のファイル: 1)複数のタブを持つXLSXファイル、これは でvlookupsが実行されるファイルです2) 'Vendor.xlsx - 参照/ vlookupテーブルがあります 3)Macro.XLSB –

+0

コードを実行するワークブックを参照する必要があります。 'ThisWorkbook'を' Workbooks( "Vendor.xlsx")に変更する必要があります。このブックはコードが存在するブックを参照します。 –

関連する問題