Letzte Zelle der Auswahl .End(xlup) mithilfe von VBA in Excel 2003 'Listen' - erfordert zwei .Wählen Sie, um die richtige Zelle?
Ich bin ein neuer Bekehrter vom Experten-Austausch, da bemerkte ich, dass Sie erhöhte die "Frei-Premium-Dienste" Punkte-Schwelle.
Es scheint, dass Excel 2003 hat Probleme mit dem End(xlup) Befehl, wenn Sie es in einem Arbeitsblatt, die enthält eine Excel - "Liste" .. Wenn ich wählen Sie eine Zelle außerhalb der 'Liste' Grenze, und dann versuchen, wählen Sie die Letzte Zelle in dem Arbeitsblatt, indem Sie VBA verwenden, habe ich zu nennen die .Wählen Sie die Funktion zweimal,, um sicherzustellen, dass ich bin immer die richtige Zelle. Wenn die ursprüngliche Zelle ist innerhalb der 'Liste' Grenze dann brauche ich nur ein .Wählen Sie. Meine gehackt zusammen-Lösung ist unten mit zwei wählt, da ich nie sicher sein kann, welche Zelle ausgewählt werden kann, auf speichern. Ich versions-check zu öffnen, um mit verschiedenen code in Excel 2007 (dieser code nicht im Jahr 2007, wo die .End(xlUp) Befehl funktioniert ordnungsgemäß).
Ist es ein beredter Weise zu umgehen?
Vielen Dank für jede Hilfe!!!
.Range("A1").Select
.Cells(.Rows.Count, "A").End(xlUp).Select
.Cells(.Rows.Count, "A").End(xlUp).Select
'two .Selects needed to select correct cell in Excel 2003 list because original selection (A1) was not in list'
.Range("A1").Select
.Cells(.Rows.Count, "T").End(xlUp)(-2, 1).Select
.Cells(.Rows.Count, "T").End(xlUp)(-2, 1).Select
'two .Selects needed to select correct cell in Excel 2003 list because original selection (A1) was not in list'
.Cells(.Rows.Count, "T").End(xlUp)(-3, 1).Select
'only one select needed here because original selection above was within the list'
Du musst angemeldet sein, um einen Kommentar abzugeben.
Sehen, wie dies funktioniert:
Verwendung finden, mag seltsam auf den ersten, aber es endet als die zuverlässigste Weg durch einige Widrigkeiten in den Weg, leere Zellen behandelt werden.
Dies ist vielleicht nicht ideal, wenn Ihre Daten nicht-normalisierten (gezackt).
Fand ich, dass mein Einsatz .End(xlUp).Wählen Sie Vorherige zum handeln auf .End(xlUp) Zelle hat das problem verursacht. Wenn ich einfach vermeiden .End(xlUp).Wählen Sie vor der Bedienung auf den .End(xlUp) Zelle, das problem ist weniger Komplex. Es kann leicht gelöst werden, indem Sie vor jedem .End(xlUp) Betrieb mit .Range("A1").Wählen Sie. Sehen Sie den code für die Erklärung. Dies nicht beheben das problem mit der fehlerhaften .End(xlUp) Zelle 'Auswahl' - aber ich bin nicht daran interessiert, in der 'Auswahl' der Zellen, nur auf Sie. Muss ich erwähnen, dass ich verwenden .Range("A1").Wählen Sie, da A1 nicht in der 'Liste', dass ich die Manipulation über VBA.
Sind Sie sicher, dass die Bereiche, die Sie mit gearbeitet haben, waren identisch? Sie sollten nicht unterschiedliche Ergebnisse erhalten mit der End-Eigenschaft in Excel 2007 gegenüber 2003.
Blick auf den code:
Jeder der beiden Zeilen haben genau null Auswirkungen auf die anderen. Keine ehrliche Erklärung angeboten werden kann deshalb über die Eigenschaft "Ende" ist, Sie unterschiedliche Ergebnisse, basierend auf den code, den Sie angegeben haben. Von dem, was geschrieben wird, sollten Sie erhalten die gleichen Ergebnisse jedes mal. (Das ist vorausgesetzt, Sie arbeiten mit identischen Bereichen.) Ich wäre misstrauisch gegenüber anderen code, der ausgeführt wird. Ich kann Ihnen ein paar Allgemeine Tipps obwohl: Wenn Sie Ende beginnend mit einer leeren Zelle, wird es aufhören, auf das erste nicht-leere Zelle. Wenn Sie beginnen mit einem nicht-leere Zelle, das Gegenteil ist wahr. Blick auf den screenshot unten:
Also, ob oder nicht Ihre Liste ist zusammenhängend, ist ein Problem. Auch ist es nicht notwendig, um einen Bereich auszuwählen, bevor Sie etwas tun, um es. Erzählen Excel markieren Sie die Zelle A1 nicht auswirken, wie es führt
.Cells(.Rows.Count, "A").End(xlUp).Select
. Vorausgesetzt, die Linie ist in einen With-block bezieht sich auf ein Arbeitsblatt, dass Zeile code ist der gleiche wie der Navigation zu Zelle A65536 (oder A1048576 in Excel 2007) und drücken Sie Strg + nach-Oben. Unter der Annahme, dass die Zelle leer ist, wird die Excel navigieren Sie nach oben, bis es findet das erste nicht-leere Zelle in Spalte A. Wenn Ihr Mit block bezieht sich auf ein range-Objekt, dann das code-Zeile wird zur ersten Spalte, Unterste Zeile des Bereichs, und navigieren Sie nach oben, bis Sie auf die erste leere oder nicht-leere Zelle.