Microsoft Excel

Herbers Excel/VBA-Archiv

spezielle Zeilenkürzung

Betrifft: spezielle Zeilenkürzung von: CharlyBraun
Geschrieben am: 12.10.2007 10:20:03

Ich steh mal wieder voll an: Bitte, vielleicht weis wer eine Lösung:

Bin bei meiner Reiseabrechnung, wobei ich hin und wieder eine Tabelle kürzen möchte.

Dim iRow As Long
For iRow = 190 To 20 Step -1
If IsEmpty(Cells(iRow, 2)) Then
Rows(iRow).Delete
End If
Next
Range("A20").Select
ActiveCell.CurrentRegion.Select
Selection.Name = "Database"

dauerte zu lange und brachte bei schwachen Rechnern voll Probleme.

'Range("A19:A210").SpecialCells(xlCellTypeBlanks).EntireRow.Delete
birgt das Problem in sich, dass auch Zeilen oberhalb des letzten Eintrages in jener Spalte gelöscht werden.
Das darf nicht sein!

Range("A236").End(xlUp).Offset(1, 0).Select
bringt mich wenigstens zum letzten Eintrag dieser Spalte.
Ab was nun, damit ich alles unterhalb des letzten Eintrages weg bringe?

Habe das schon probiert, jedoch
stehe ich wieder vor dem Problem schwacher Rechner!

Range("BI236").End(xlUp).Offset(1, 0).Select
Dim L As Long
Dim ZL As Long

ZL = 200
ZL = ActiveSheet.UsedRange.Rows.Count
For L = 1 To ZL
If Len(ActiveCell.Value) = 0 _
Then ActiveCell.EntireRow.Delete _
Else ActiveCell.Offset(1, 0).Select
Next L

Vielleicht weis mir jemand einen Rad, damit schwache Rechner auch mit diesem Programm leben können.

Vielen Dank im voraus.

charlybraun

  

Betrifft: AW: spezielle Zeilenkürzung von: Niels
Geschrieben am: 12.10.2007 14:40:12

Hi charlybraun,
das es auf schwachen Rechnern nicht richtig leuft liegt an der Select Anweisung.
Wenn ich Dich richtig verstanden habe, möchtest du:
1. Den letzten Eintrag von Spalte B ermitteln und alle Reihen die da nach kommen löschen.
2. In Spalte B im Bereich von Reihe 20 bis Reihe(Spalte B letzten Eintrag) leere Zellen löschen.
versuch mal folgenden Code:

Sub löschen()
Application.ScreenUpdating = False 'Bildschirmaktualisierung abgeschaltet
Dim iRow As Long
lz = Range("B65536").End(xlUp).Row 'letzter Eintrag in Spalte B
lze = 65536
Rows(lz + 1 & ":" & lze).Delete 'löscht alle Reihen nach LZ
For iRow = lz To 20 Step -1
If IsEmpty(Cells(iRow, 2)) Then
Rows(iRow).Delete
End If
Next
Range("A20").CurrentRegion.Name = "Database"
Application.ScreenUpdating = True 'Bildschirmaktualisierung eingeschaltet
End Sub



Gruß Niels


  

Betrifft: AW: spezielle Zeilenkürzung von: CharlyBraun
Geschrieben am: 15.10.2007 12:01:08

Vielen Dank für Deine Hilfe.

Bin aber noch an einem weiteren Problem kämpfend:



Hab 4 Spalten: Kunde1 beginn Kunde1 Ende, Kunde2 Beginn Kunde2 Ende



für die 2te Kunde möchte ich die Datenbank entsprechend verändern.



d. h.: die Bank soll erst mit EndeK1 bzw. Beginn K2 (in selber Reihe) starten und mit Kunde2 Ende aufhören

die Reihen davor sollen weg und die Reihen danach sowieso (danach ist kein Problem)

zum Davor:

ich bin mit:

Range("Ac236").End(xlUp).Offset(-1, 0).Select

Selection.EntireRow.Clear

soweit, dass ich oberhalb des ersten Eintrages (kommt sowieso nur 1mal vor, nämlich bei Beginn von K2)

mir eine leere Zeile gemacht habe und jetzt sozusagen bis zur Reihe 19 (wo die überschriften stehen) keine Daten mehr in dieser Spalte!

kann ich mit der leeren "selektierten Reihe" nach oben bis ac19 was anfangen, oder

gibt's da einen weiteren leichteren Schmäh, das Problem zu lösen?

Wär sehr dankbar für Hilfe.



lg

charlybraun