2016-06-18 13 views
1

では、次の問題の解決に私を助けてもらえ異なるワークシートに同じ範囲をループ:、SourceWsNrが1に等しいとき実行時エラー1004アプリケーション定義またはオブジェクト定義のエラー -

Sub PBLSearch() 

    Dim PBLRng As Range 
    Dim PBL As Range 
    Dim SearchRng As Range 
    Dim SourceWsNr As Integer 

    For SourceWsNr = 1 To 2 
     Debug.Print Workbooks("Book1.xlsx").Sheets(SourceWsNr).Name 
     Set PBLRng = Workbooks("Book1.xlsx").Sheets(SourceWsNr).Range(Range("A1"), Range("A1").End(xlDown)) 
     For Each PBL In PBLRng.Cells 
      Debug.Print PBL.Value 
     Next PBL 
    Next SourceWsNr 

End Sub 

コードが正常に動作しますがこれが2に変わるとすぐに、私はこの問題に言及したエラーを受け取ります。 PBLRng変数を再設定したためですか?私はこの問題に対する解決策を見つけることができませんでした...

ありがとうございます。

S. Sz。

+0

ここで、このマクロを呼び出していますか?シート、ThisWorkbook、またはモジュールの後ろに?私の推測では、最初のシートから呼び出しているので、次の参照先に不特定の範囲を参照しています。 – Parfait

+0

Debug.Print行にエラーが表示されますか? – Absinthe

答えて

1

問題が

Workbooks("Book1.xlsx").Sheets(SourceWsNr).Range(Range("A1"), Range("A1").End(xlDown)) 

Range("A1")Range("A1").End(xlDown)、第2シート上に失敗した理由であるアクティブワークシートのセルを参照している行である(シートの範囲メソッドの引数でなければなりません同じシート上に)。 Rangeを呼び出すときには、これはそれを行う必要がありますシートを毎回指定する必要があります。

With ActiveWorkbook.Sheets(SourceWsNr) 
    Set PBLRng = .Range("A1", .Range("A1").End(xlDown)) 
End With 

編集:あなたも.Cells(.Rows.count,1).End(xlUp)のように、最後の行を見つけるために、別の方法を使用して検討するかもしれません。あなたの特定のニーズにもよりますが。

+0

私はあなたに "ありがとう"と書かれているとは思いませんが、あなたの答えは本当に役に立ちましたので、どうもありがとう! –

+0

@SándorSzilágyi私は助けることができてうれしい:) – arcadeprecinct

関連する問題