492 Aufrufe
Gefragt in Tabellenkalkulation von fedjo Experte (2.2k Punkte)
Hallo Experten,
bräucht mal eure Hilfe zu einem Makro.

Wie kann man jede darüberliegende leere Zelle nach einem Eintrag
in der Spalte B löschen?

012.01.01    löschen
012.01.01    9900193
012.01.01    6600456
012.01.02   
012.01.03    löschen
012.01.03    8800088
012.01.03    7700077

4 Antworten

0 Punkte
Beantwortet von m-o Profi (22.7k Punkte)
Hallo Fedjo,

probier es mal so:

[code]Sub leer_loeschen()
Dim lngZeile As Long
Dim lngLetzte As Long

lngLetzte = ActiveSheet.Cells(Rows.Count, 1).End(xlUp).Row

For lngZeile = lngLetzte To 2 Step -1
 If IsEmpty(Cells(lngZeile, 2)) = False And IsEmpty(Cells(lngZeile - 1, 2)) = True Then
   Rows(lngZeile - 1).Delete
   lngZeile = lngZeile - 1
 End If
Next lngZeile

End Sub[/code]

Gruß

M.O.
0 Punkte
Beantwortet von fedjo Experte (2.2k Punkte)
Hallo M.O.,
[b]funktioniert einfach super, DANKE.[/b]

Hätte da noch eine Frage zu Drucken.
Wie muss das Makro geändert werden,
das sich der Druckbereich anpasst nach den längen der Einträge
in Spalte A oder F?

Private Sub CommandButton1_Click()
Dim s, F
s = 1
F = Cells(Rows.Count, s).End(xlUp).Row
ActiveSheet.PageSetup.PrintArea = "$A$1:$I$" & F
ActiveSheet.PrintOut
End Sub

A                      F                              
012.04.12    013.04.14                
012.04.13    013.04.15              
012.04.14                                               
012.04.15                                                              
012.04.15               

Gruß
fedjo
0 Punkte
Beantwortet von m-o Profi (22.7k Punkte)
Hallo Fedjo,

was meinst du mit
[quote]das sich der Druckbereich anpasst nach den längen der Einträge
in Spalte A oder F?[/quote]

Meinst du damit, dass der Druckbereich an die längste Spalte angepasst wird?
Dann würde ich das so machen:
[code]Private Sub CommandButton1_Click()
Dim lngLetzte As Long

'Prüfen, ob in Spalte A oder in Spalte F die größte Zeilennummer steht
If ActiveSheet.Cells(Rows.Count, 1).End(xlUp).Row > ActiveSheet.Cells(Rows.Count, 6).End(xlUp).Row Then
 lngLetzte = ActiveSheet.Cells(Rows.Count, 1).End(xlUp).Row
Else
 lngLetzte = ActiveSheet.Cells(Rows.Count, 6).End(xlUp).Row
End If

ActiveSheet.PageSetup.PrintArea = "$A$1:$I$" & lngLetzte
ActiveSheet.PrintOut

End Sub[/code]
Gruß

M.O.
0 Punkte
Beantwortet von fedjo Experte (2.2k Punkte)
Hallo M.O.,
ja der  Druckbereich sollte an die längste Spalte angepasst werden.

[b]Das Makro funktioniert auch einwandfrei.
DANKE[/b]

Gruß
fedjo
...