winget
Goto Top

Beim Null Wert in der Zelle komplette Zeile nicht drucken

Hallo zusammen,
ich suche nach einer Lösung (gerne auch VBA) für folgenes Problem.

Beispiel:

Wenn z.B.die Zellen D2, D6, D10 einen Nullwert aufweisen, dann soll beim Drucken die Zeilen 2, 6 und 10 automatisch ausgebleden werden.
Umstädlich kann man immer wieder mit dem Filter machen, indem "0" ausgebledet wird.

Vielen Dank im Voraus

Content-ID: 289114

Url: https://administrator.de/forum/beim-null-wert-in-der-zelle-komplette-zeile-nicht-drucken-289114.html

Ausgedruckt am: 27.12.2024 um 19:12 Uhr

122990
Lösung 122990 23.11.2015 aktualisiert um 16:16:45 Uhr
Goto Top
Sub LeerAusblenden()
    Dim f As Range
    With ActiveSheet.Range("D:D")  
        Set f = .Find(0, LookIn:=xlValues, LookAt:=xlWhole)
        If Not f Is Nothing Then
            Do
                f.EntireRow.Hidden = True
                Set f = .FindNext(f)
            Loop While Not f Is Nothing
        End If
    End With
End Sub
Gruß grexit
winget
winget 23.11.2015 um 13:34:48 Uhr
Goto Top
Hallo grexit,
funktioniert leider nicht.

Siehe Beispiel Datei (Link). Die Zeilen 3 und 5 werden gedruckt, obwohl in D3 und D5 Null steht

Test-Datei

Danke
122990
Lösung 122990 23.11.2015 aktualisiert um 16:14:17 Uhr
Goto Top
Zitat von @winget:
funktioniert leider nicht.
Naja starten musst du das Makro schon face-wink Geht problemlos ...

Willst du das vor dem Druck automatisch ausführen lassen musst du folgenden Code in den Workbook-Codeabschnitt einfügen:
Private Sub Workbook_BeforePrint(Cancel As Boolean)
    LeerAusblenden
End Sub

Sub LeerAusblenden()
    Dim f As Range
    With ActiveSheet.Range("D:D")  
        Set f = .Find(0, LookIn:=xlValues, LookAt:=xlWhole)
        If Not f Is Nothing Then
            Do
                f.EntireRow.Hidden = True
                Set f = .FindNext(f)
            Loop While Not f Is Nothing
        End If
    End With
End Sub

http://we.tl/fklbXU1kFO
winget
winget 23.11.2015 um 13:56:13 Uhr
Goto Top
Ok. Verstanden und funktioniert. Vielleicht habe ich mich falsch ausgedruckt.


Was ich eigentlich suche, ist eine Lösung, die nur beim Drucken startet.

d.H. Wenn ich den Druck-Button betätige, soll den Bereich wie oben ausgebledet werden. Aber nur für den Druck. Der Bereich soll nicht ausgebledet bleiben (nach dem Druck).
122990
Lösung 122990 23.11.2015 aktualisiert um 16:14:28 Uhr
Goto Top
Zitat von @winget:
Was ich eigentlich suche, ist eine Lösung, die nur beim Drucken startet.

d.H. Wenn ich den Druck-Button betätige, soll den Bereich wie oben ausgebledet werden. Aber nur für den Druck. Der Bereich soll nicht ausgebledet bleiben (nach dem Druck).
Kannst du ja hinterher sofort wieder einblenden, auch via Code ...
winget
winget 23.11.2015 um 16:16:22 Uhr
Goto Top
Danke grexit!
Ich habe mit einem Print-Button wie folgt gelöst.

'Ausblenden  
Sub LeerAusblenden()
    Dim x As Integer
    Dim check_wert As String
    
    For x = 1 To 100
        Range("D" & CStr(x)).Activate  
        check_wert = ActiveCell.Value
        
        If CStr(check_wert) = "0" Then  
            ActiveCell.EntireRow.Hidden = True
        Else
        End If
    
    Next x
End Sub

'Druck   
Sub Druck()
 Range("A1:D10").Select  
 Selection.PrintOut Copies:=1
 End Sub
 
'Einbleden   
Sub WiederEinbleden()
    Rows("1:100").Select  
    Selection.EntireRow.Hidden = False
End Sub


'Button Code  
Private Sub Printing_Click()
LeerAusblenden
Druck
WiederEinbleden
End Sub