2016-11-30 1 views
0

Ich bin schon ein paar Mal darauf gestoßen, immer ziemlich nervig. Ich kann es umgehen, aber ich versuche herauszufinden, ob es einen Grund dafür oder eine einfachere Abhilfe gibt.Kann einen Bereich nicht durchlaufen, nachdem ich ihn mit range.columns (n) definiert habe.

Ich habe eine Reihe definiert, dass meine Daten enthält alle mit

Set rngAll = range("A8",cells(usedrange.rows.count,usedrange.columns.count)) 

Jetzt möchte ich in der ersten Spalte dieses Bereichs durch jede Zelle suchen, und ich versuche, dies zu tun:

Set rngUserIDs = rngAll.columns(1) 
For each rngCell in rngUserIDs 
    Do Something 
next rngCell 

Wenn ich den Code ausführen, statt in rngUserIDs bei jeder einzelnen Zelle suchen, rngCell stellt sich die Gesamtheit der rngUserIDs anzupassen. Wenn rngUserIDs = A8: A1000, anstatt an A8 zu beginnen und zu schleifen, rngCell sofort = A8: A1000, tut es etwas und verlässt dann die Schleife.

Wenn ich gesetzt rngUserIDs andere Art und Weise, wie zum Beispiel:

set rngUserIDs = Range("A8","A" & range("A" & rows.count).end(xlup).row) 
For Each rngCell in rngUserIDs 
    Do Something 
next rngCell 

es funktioniert perfekt, in jeder Zelle wiederum suchen.

Gibt es einen Grund für dieses Verhalten? Kann ich irgendetwas dagegen tun? Ja, ich kann das umgehen, aber aus verschiedenen strukturellen Gründen wäre es bequem, wenn ich einfach die erste Spalte von rngAll verwenden könnte.

Antwort

1

Sie müssen die Cells-Eigenschaft angeben, aus Gründen, die ich nicht ganz sicher bin, hätte ich gedacht, dass die letzte Option die beste Option war, da Sie Ihren Bereich so weit wie möglich einschränken möchten.

Set rngUserIDs = rngAll.columns(1) 
For each rngCell in rngUserIDs.Cells 
    Do Something 
next rngCell 
+0

Eines der Dinge, die ich mit der Schleife mache, ist die Suche nach leeren Zellen in dieser Spalte. Da am Ende der Daten Leerzeichen vorkommen können, während in den anderen Spalten noch Daten vorhanden sind, kann die Verwendung von ".end (xlup)" für diese Spalte zu einem irreführenden Ergebnis führen. – Werrf

+0

Sie können Suchen verwenden, um die zuletzt verwendete Zeile in einer beliebigen Spalte zu finden und dann Ihren Code auf diesen reduzierten Bereich zu beschränken. – SJR

Verwandte Themen