Leerzeilen löschen mit VBA

  • #1
N

Nick_Stgt

Neues Mitglied
Themenersteller
Dabei seit
29.05.2005
Beiträge
4
Reaktionspunkte
0
Hallo Zusammen,

ich schreibe im Moment an einem Makro. Dieses Makro soll Daten aus einer Exceldatei in eine neue Arbeitsmappe kopieren. Das Problem dabei ist, dass ich, nachdem die Daten kopiert wurden, auch immer ein paar Leerzeilen habe. Diese möchte ich automatisch löschen. Ich muss dazu sagen, dass ich noch ziemlicher Anfänger bin, was das VBA-Programmieren betrifft. Leider mußte ich feststellen, dass es gar nicht so einfach ist einen Code zu schreiben, mit dem man die Leerzeilen löschen kann. Es soll so funktionieren:

Es soll von Spalte A bis X geprüft werden, ob eine GANZE Zeile leer ist. Ist sie es, soll die ganze Zeile gelöscht werden.

Hört sich ganz einfach an, ist aber für mich ein Riesenproblem, da ich im Schleifenprogrammieren noch sehr sehr schlecht bin. Vielleicht kann mir ja jemand helfen. Übrigens sind die Daten alle als Text formatiert.

Es würde mich sehr freuen, wenn mir jemand weiterhelfen könnte.

Vielen Dank schon im Voraus.
 
  • #2
Hallo

Kopiere die folgenden Makrozeilen in ein Visual basic modul welches immer zur verfügung steht (Global).
Rufe dann aus der Tabelle mit Leerzeilen und (oder) Spalten Makro LeereZeilenSpaltenLöschen auf,
kannst dann auswählen ob Leere- Zeilen und (oder) Spalten gelöscht werden sollen.

MfG hddiesel

Sub LeereZeilenSpaltenLöschen()
Dim LZeile As Long, LSpalte As Long
Dim Letzte As Long, Zeile As Long, Spalte As Long
Dim i As Integer, TopPos As Integer
Dim DruckDlg As DialogSheet
Dim CurrentSheet As Worksheet
Dim CB As CheckBox
Application.ScreenUpdating = False
Set CurrentSheet = ActiveSheet
Set DruckDlg = ActiveWorkbook.DialogSheets.Add
DruckDlg.CheckBoxes.Add 78, 40, 70, 16.5
DruckDlg.CheckBoxes(1).Text = Leere Zeilen
DruckDlg.CheckBoxes.Add 78, 53, 70, 16.5
DruckDlg.CheckBoxes(2).Text = Leere Spalten
DruckDlg.Buttons.Left = 200
With DruckDlg.DialogFrame
.Height = Application.Max(68, DruckDlg.DialogFrame.Top + TopPos - 34)
.Width = 230
.Caption = Leere Elemente zum Löschen auswählen
End With
DruckDlg.Buttons(Button 2).BringToFront
DruckDlg.Buttons(Button 3).BringToFront
LZeile = False
LSpalte = False
CurrentSheet.Activate
Application.ScreenUpdating = True
If DruckDlg.Show Then
If DruckDlg.CheckBoxes(1).Value = xlOn Then LZeile = True
If DruckDlg.CheckBoxes(2).Value = xlOn Then LSpalte = True
End If
Application.DisplayAlerts = False
DruckDlg.Delete
CurrentSheet.Activate
Application.ScreenUpdating = False
If LZeile Then
Letzte = ActiveSheet.UsedRange.Rows.Count
For Zeile = Letzte To 1 Step -1
If Application.CountA(ActiveSheet.Rows(Zeile)) = 0 Then _
ActiveSheet.Rows(Zeile).Delete
Next Zeile
End If
If LSpalte Then
Letzte = ActiveSheet.UsedRange.Columns.Count
For Spalte = Letzte To 1 Step -1
If Application.CountA(ActiveSheet.Columns(Spalte)) = 0 Then ActiveSheet.Columns(Spalte).Delete
Next Spalte
End If
Application.ScreenUpdating = True
End Sub
 
  • #3
Hallo HDDiesel,

vielen Dank für Deine Antwort. Ich werde es morgen mal testen. So auf den ersten Blick sieht es ja ziemlich komplex aus. Ich bin gespannt, ob es funktioniert.

Viele Grüße

Nick
 
Thema:

Leerzeilen löschen mit VBA

ANGEBOTE & SPONSOREN

Statistik des Forums

Themen
113.838
Beiträge
707.961
Mitglieder
51.491
Neuestes Mitglied
haraldmuc
Oben