2016-03-25 7 views
-1

Ich habe alle Zellen in einem Blatt ausgewählt und Alle löschen, um mir eine leere Tabelle zu bringen. Dann habe ich in E6 und A1 einige Texte eingegeben. Dann habe ich den folgenden Code ausgeführt, aber ich habe E7-Zelle ausgewählt. Wie seltsam! Ich frage mich, ob ich etwas verpasst habe.Wie verwende ich xlCellTypeLastCell in VBA?

Sub Macro1() 
    Cells.SpecialCells(xlCellTypeLastCell).Select 
End Sub 
+2

Siehe [Excel.Application.Cells.SpecialCells (xlCellTypeLastCell) am unteren Ende des Arbeitsblatts, nicht letzte Datenzelle] (http://stackoverflow.com/q/25110873/4088852). – Comintern

Antwort

0

Aufgrund meiner Erfahrung die beste Lösung letzte Zelle/Zeile usw. Daten enthalten, zu finden, ist durch .find Verfahren, da es zuverlässig ist, selbst nachdem einige Daten zu löschen. Der einzige Nachteil ist, dass versteckte Zeilen nicht erkannt werden.

Der folgende Code gibt die letzte Zeile mit den Daten in der fünften Spalte (Spalte E) zurück. Ersetzen Sie "Spalten (5)" durch "Zellen", wenn Sie die Nummer der letzten Zeile mit Daten in Ihrem gesamten Blatt erhalten möchten.

Auswahl ist eine schlechte Übung in VBA (langsam - kann nicht für große Datensätze und nicht transparent für die Codierung verwendet werden). Sie können auf die Zelle von meinem Code als Bereich verweisen ("E" & TheLastRow).

Option Explicit 

Sub Macro1() 
Dim TheLastRow as long 
    TheLastRow = Columns(5).Find(What:="*", SearchOrder:=xlByRows, SearchDirection:=xlPrevious).Row 
End Sub 
+1

Wahrscheinlich am besten, ein 'After: = Cells (1, 5)' als Parameter für die [Range.Find-Methode] (https://msdn.microsoft.com/en-us/library/office/ff839746.aspx) zu verwenden). Ich denke nicht, dass Sie sich auf was auch immer die [ActiveCell-Eigenschaft] (https://msdn.microsoft.com/en-us/library/office/ff193314.aspx) verlassen sollten. – Jeeped

1

Rufen Sie die Worksheet.UsedRange property von selbst alle xlCellTypeLastCell property des Range.SpecialCells method zurückgesetzt werden.

Sub Macro1() 
    Range("E7") = "abc" 
    Cells.Clear 
    Range("E5") = "xyz" 
    Cells.SpecialCells(xlCellTypeLastCell).Select 
    ActiveSheet.UsedRange 
    Cells.SpecialCells(xlCellTypeLastCell).Select 
End Sub 

Wenn Sie durch die mit [F8] Schritt wird zunächst E7 ausgewählt wird, dann nach dem Aufruf von .UsedRange wird E5 ausgewählt werden.