2016-06-18 20 views
1

Könnten Sie mir bitte helfen, das folgende Problem bei der Lösung:Laufzeitfehler 1004 Anwendung definiert oder Objekt definiert Fehler - Schleifen über denselben Bereich in verschiedenen Arbeitsblättern

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 

Der Code funktioniert gut, wenn die SourceWsNr gleich 1, aber sobald sich diese auf 2 ändert, erhalte ich den Fehler, der im Betreff erwähnt wird. Liegt es daran, dass ich die PBLRng Variable neu gesetzt habe? Ich konnte keine Lösung für dieses Problem finden ...

Vielen Dank im Voraus.

Mit besten Grüßen,

S. Sz.

+0

Wo rufst du dieses Makro an? Hinter einem Blatt, ThisWorkbook oder Modul? Meine Vermutung ist, dass Sie vom ersten Blatt anrufen und so zu nächsten Referenzen nicht näher bezeichnete Bereiche verschieben. – Parfait

+0

Erhalten Sie den Fehler in der Zeile Debug.Print? – Absinthe

Antwort

1

Das Problem ist die Linie

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

Die Range("A1") und Range("A1").End(xlDown) werden die Zellen in dem aktiven Arbeitsblatt Referenzierung, weshalb es auf dem zweiten Blatt (die Argumente für die Bereichsverfahren eines Blattes nicht sein müssen auf dem gleichen Blatt). Sie haben den Bogen jedes Mal angeben, wenn Range Aufruf Dies sollte es tun:

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

Edit: Sie auch eine andere Art und Weise betrachten könnten mit der letzten Zeile zu finden, wie .Cells(.Rows.count,1).End(xlUp). Es hängt jedoch von Ihren spezifischen Bedürfnissen ab.

+0

Ich weiß, ich soll nicht nur "Danke" schreiben, aber deine Antwort war wirklich hilfreich, also vielen Dank! –

+0

@ SándorSzilágyi froh, ich könnte helfen :) – arcadeprecinct

Verwandte Themen