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.
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
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