Excel / VBA: Nur benutzte Zeilen mit einer Schleife durchlaufen

Sucht man mit VBA nach zB einer Zeile mit einem bestimmten Wert, verwenden viele VBA Programme die ich gesehen habe “for y=1 to 65000”. Man kann ja nie sicher sein, wie lang die Excel Liste ist. Das Dumme daran ist, das Excel, wenn der Wert nicht gefunden wird mehrere Sekunden lang steht, weil 65000 leere, unbenutzte Zellen durchgeackert werden, obwohl das Sheet nur 150 Zeilen hat.
Als Programmierer sträuben sich einem bei manchen VBA-Programmen die Haare.
Besser ist es nur die wirklich benutzten Zeilen zu durchsuchen.Einige Programmierer prüfen hierzu die zu bearbeitende Zelle ob sie leer ist und brechen dann die Schleife ab. Was aber wenn die Leerzeile beabsichtigt war? Dann funktioniert das Programm nicht richtig und solche Fehler sucht man dann ewig.

Besser und vor allem viel schneller geht es mit Excel Bordmitteln. Denn Excel kennt die letzten benutzen Zellen und Spalten. Hierfür gibt es sogar einen Befehl:

UsedRange.SpecialCells(xlCellTypeLastCell).Row

Und noch kurz ein Beispielcode:

Nur benutzte Zeilen/Zellen durchlaufen

Private Sub cmd_leereTabellen_Click()
MsgBox ("leereTabelle")
Dim x
Dim y
Dim xmax
Dim ymax
xmax = 5 ' max Spalte
ymax = ActiveSheet.UsedRange.SpecialCells(xlCellTypeLastCell).Row

For y = 2 To ymax + 1
For x = 1 To xmax
Cells(y, x).Value = ""
Next
' If (Cells(y, 1).Value = "0") Then
' Cells(y, x).EntireRow.Hidden = True
' Else
' Cells(y, x).EntireRow.Hidden = False
' End If
Next
End Sub

 

0 Kommentare

Hinterlasse einen Kommentar

An der Diskussion beteiligen?
Hinterlasse uns deinen Kommentar!

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert