776 Aufrufe
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
von m-o Profi (22.9k 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
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
von m-o Profi (22.9k 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
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

Deine Antwort

Dein angezeigter Name (optional):
Datenschutz: Deine Email-Adresse benutzen wir ausschließlich, um dir Benachrichtigungen zu schicken. Es gilt unsere Datenschutzerklärung.
Anti-Spam-Captcha:
Bitte logge dich ein oder melde dich neu an, um das Anti-Spam-Captcha zu vermeiden.
...