Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1416to1420
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Leere Zeilen in Spalte suchen

Leere Zeilen in Spalte suchen
08.04.2015 17:11:24
flotschuk
Hallo Leute,
ich habe folgendes Problem. Meine Tabelle umfasst mehrere Abschnitte von Daten. z.B. sind in Spalte D die Zeilen 3 bis 8 befüllt, die Zeilen 13 bis 20 und 24 bis 30.
Nun möchte ich am Ende eines Abschnittes eine leer Zeile per Makro einfügen. Also wenn zum Beispiel Zeile D9 leer ist soll hier eine Zeile eingefügt werden. Ist diese Dann befüllt soll bei erneutem Aufruf nach Zeile D9 eine leer Zeile eingefügt werden.
Unten ein erster Versuch, wo ich ein anderes Makro umgeschrieben habe. Funktioniert aber leider _ nicht so wie ich mir das vorstelle.

Sub Zeile_einfügen_1()
' Zeile_einfügen_1 Makro
Application.ScreenUpdating = False
Dim i As Long, ZelleStart As Range
Dim lZeile As Long, lZeile_1 As Long, lZeile_L As Long
Dim wksData As Worksheet
i = 0
Set wksData = Worksheets("Tabelle1")
With wksData
Set ZelleStart = .Cells(3, 5) 'Zelle D5
'Zeile nach der Startzelle (= 1. Zeile, die im Diagramm  dargestellt sein könnte)
lZeile_1 = ZelleStart.Row + 1
'letzte Zelle mit Inhalt in Spalte D
lZeile_L = .Cells(.Rows.Count, ZelleStart.Column).End(xlDown).Row
End With
For lZeile = lZeile_1 To lZeile_L
'prüfen, ob Zeile befüllt
If wksData.Rows(lZeile).Value  "" Then
'Zeile leer, Zähler für Datenpunkt erhöhen
i = i + 1
'Zellwert in Spalte C vergleichen und Farbe des Datenpunktes setzen
Sheets("Tabelle1").Range("Projects").EntireRow.Insert Shift:=xlDown, _
CopyOrigin:=xlFormatFromLeftOrAbove
End If
Next
End Sub

Vielen Dank für die Hilfe

1
Beitrag zum Forumthread
Beitrag zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Leere Zeilen in Spalte suchen
09.04.2015 10:46:00
fcs
Hallo Flotschuk,
da sich die Zellbereiche des 2. und 3. Abschnitts mit jeder neuen Zeile im 1./2. Abschnitt verändern funktioniert es nicht so einfach.
Am besten funktioniert es, wenn man für die 1. Zelle jes Abschnitts in Spalte D einen Namen definiert. Über diesen Namen ist dann auch die Startzelle definiert ab der nach der nächsten leeren Zele gesucht werden soll.
Die Makros könne dann wie folgt aussehen, wobei der Bereichsname und das Tabellenblatt als Parameter an ein zentrales Makro übergeben werden.
Gruß
Franz
'Erstellt und Excel 2010
'Code in einem allgemeinne Modul
Sub ZeileEinfuegen_Bereich_01()
Call Zeile_einfuegen(strNameBereich:="Bereich_01", _
wksData:=Worksheets("Tabelle1"))
End Sub
Sub ZeileEinfuegen_Bereich_02()
Call Zeile_einfuegen(strNameBereich:="Bereich_02", _
wksData:=Worksheets("Tabelle1"))
End Sub
Sub ZeileEinfuegen_Bereich_03()
Call Zeile_einfuegen(strNameBereich:="Bereich_03", _
wksData:=Worksheets("Tabelle1"))
End Sub
Sub Zeile_einfuegen(strNameBereich As String, wksData As Worksheet, _
Optional bolZeile As Boolean = True)
'strNameBereich = Name der Startzelle ab der leere Zelle gesucht werden soll
'wksData = Tabellenblatt mit strNameBereich und Daten
'bolZeile = wenn True --> komplette Leerzeile wird eingefügt _
wenn False --> eine Zelle wird eingefügt
On Error GoTo Fehler
Application.ScreenUpdating = False
Dim ZelleStart As Range
Dim lZeile As Long, lSpalte As Long
With wksData
Set ZelleStart = .Range(strNameBereich).Range("A1")
lSpalte = ZelleStart.Column
'Zeile mit der Startzelle
lZeile = ZelleStart.Row + 1
Do
'prüfen, ob Zelle in Zeile befüllt
If .Cells(lZeile, lSpalte).Value  "" Then
'Zelle nicht leer
lZeile = lZeile + 1
Else
If bolZeile = True Then
'Leerzeile einfügen
.Cells(lZeile, lSpalte).EntireRow.Insert Shift:=xlDown
Else
'Leerzelle einfügen
.Cells(lZeile, lSpalte).Insert Shift:=xlDown
End If
Exit Do
End If
Loop
End With
'Fehlerbehandlung
Fehler:
With Err
Select Case .Number
Case 0 'alles OK
Case 1004
MsgBox "Fehler-Nr.: " & .Number & vbLf _
& "Name """ & strNameBereich & """ existiert nicht im Blatt " & wksData.Name, _
vbOKOnly, "Fehler Makro: Zeile_einfuegen"
Case Else
MsgBox "Fehler-Nr.: " & .Number & vbLf & .Description, _
vbOKOnly, "Fehler Makro: Zeile_einfuegen"
End Select
End With
Application.ScreenUpdating = True
End Sub

Anzeige

310 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige