Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.04.2024 20:05:21
28.04.2024 18:33:31
28.04.2024 18:25:12
28.04.2024 14:18:05
Anzeige
Archiv - Navigation
1932to1936
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

Druckmakro

Druckmakro
12.06.2023 17:50:37
Robert Pilz

Hallo liebe Exelfreunde

Habe mal wieder ein Problem mit einem Makro zum Seriendruck unter verschiedenen Bedingungen. Hoffe Ihr könnt mir helfen bei der Lösung.
Es sollen nur die Seiten gedruckt wo in der Zelle D4 eine 1 steht. Wenn und das in der jeweiligen Zeile dann jeweils in 5er Spaltensprüngen. Wenn eine 0 dort steht soll dieser Druckbereich übersprungen werden. Es sind insgesamt 34 Blätter die im Orginal so ausgeselesen und gedruckt werden sollen. Nun mein Problem klappt alles wunderbar wenn in D4 eine absolute Zahl steht außer 0, aber sobald im ersten Druckbereich in D4 die 0 steht kommt die Fehlermeldung "Microsoft visual Basic 400" und bricht ab. Was kann ich tun um dies zu verändern das auch wenn keine Stückzahl dasteht weiter gezählt wird und gedruckt. Mit einer absoluten Zahle in der Zelle gibt es kein Problem.

Sub Schaltfläche1_Klicken()
Dim ws As Worksheet, i As Long, loZeile As Long, loSpalte As Long

For Each ws In ThisWorkbook.Worksheets
    If ws.Name Like "Liefer*" Then
        With ws
            loZeile = .Cells(.Rows.Count, "A").End(xlUp).Row
            For i = 2 To .Cells(12, .Columns.Count).End(xlToLeft).Column Step 5
                If .Cells(12, i) = 0 Then
                    loSpalte = i - 2
                    Exit For
                End If
            Next i
            .Range(.Cells(1, "A"), .Cells(loZeile, loSpalte)).PrintPreview
        End With
    End If
Next ws

Hänge eine Beispieldatei an.
https://www.herber.de/bbs/user/159560.xlsx

Für Eure mühe danke ich im voraus.

LG Robert

9
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Druckmakro
12.06.2023 18:06:49
onur
1) WO in deinem Code wird denn nach dem Inhalt von D4 gefragt ???
2) i fängt mit dem Wert 2 an, aber
loSpalte = i - 2
ergibt bei i=2 den Wert 0 und Spalte 0 gibt es nun mal nicht.


AW: Druckmakro
13.06.2023 10:45:07
Robert Pilz
Hallo Onur und der Rest der Exelgemeinde

Ich habe es jetzt noch mal mit dem umschreiben eines Makros was in meiner Liste schon existiert probiert, komme damit aber auch nicht zum Ziel obwohl ich mir sicher bin das D4 jetzt abgefragt wird nach 0 oder mehr.
Ohne Eure Hilfe werde ich das nicht schaffen wie es aussieht.

Wäre sehr schön wenn Ihr mir unter die Arme greifen könntet.
Public Sub Lieferscheine_drucken_Lieferscheine()
Dim i As Long, ws As Worksheet, raWeg As Range

For Each ws In ThisWorkbook.Worksheets
    If ws.Name Like "Liefer*" Then
        With ws
            For i = 4 To 170 Step 5
                If WorksheetFunction.Sum(.Cells(4, i) .> 0
                    If raWeg Is Nothing Then
                        Set raWeg = .Cells(4, i).Offset(-3, -4)
                    Else
                        Set raWeg = Union(raWeg, .Cells(4, i))
                    End If
                End If
            Next i
            If Not raWeg Is Nothing Then
                raWeg.PrintPreview
            End If
        End With
    End If
     Set raWeg = Nothing
Next ws
        
Set raWeg = Nothing
End Sub
Für Eure Mühe danke ich im voraus
https://www.herber.de/bbs/user/159560.xlsx

LG Robert


Anzeige
AW: Druckmakro
13.06.2023 10:45:46
Robert Pilz
Hatte ich vergessen.


AW: Druckmakro
13.06.2023 11:38:50
Rudi Maintaire
Hallo,
dein WENNS(....) in Zeile 4 ist totaler Quatsch.
Ändere in
=WENN(SUMME(B12:B34);1;0)

Sub Drucken()
  Dim WKS As Worksheet
  Dim lngCol As Long
  
  For Each WKS In Worksheets
    If Left(WKS.Name, 6) = "Liefer" Then
      With WKS
        For lngCol = 4 To .Cells(10, .Columns.Count).End(xlToLeft).Column Step 5
          If Cells(4, lngCol) = 1 Then
            .PageSetup.PrintArea = .Cells(10, lngCol - 3).Resize(25, 5).Address
            .PrintPreview
'            .PrintOut
          End If
        Next lngCol
      End With
    End If
  Next WKS
  
End Sub
Gruß
Rudi


Anzeige
AW: Druckmakro
13.06.2023 14:35:27
Robert Pilz
Hallo Rudi!

Entgegen der Beispieldatei, handelt es sich im Original um insgesamt 12 Arbeitsblätter auf denen jeweils 34 Seiten sind die gedruckt werden sollen und wenn nichts bzw. 0 steht eben nicht. Nun wäre es gut wenn diese Blockweise geschehen könnte. Jetzt muss ich jede Seite einzeln anklicken. Das mit 1 und null funktioniert gut und Null Seiten werden ausgelassen.. Könnte man das noch Automatisieren?

Für Hilfe wäre ich sehr dankbar.

LG Robert


AW: Druckmakro
13.06.2023 14:36:03
Robert Pilz
Habe ich wieder vergessen.


AW: Druckmakro
13.06.2023 15:06:16
Rudi Maintaire
Hallo,
Jetzt muss ich jede Seite einzeln anklicken.
es werden alle Blätter, deren Name mit 'Liefer' anfängt, berücksichtigt. Hier wird beginnend mit D4 die Zeile 4 auf 1 geprüft und die Vorschau angezeigt. Wenn du direkt drucken willst, ersetze .PrintPreview durch .PrintOut.

Gruß
Rudi


Anzeige
AW: Druckmakro
13.06.2023 16:12:34
Robert Pilz
Hallo Rudi

Erst mal vielen Dank für Deine Hilfe.
Mit Deiner Version muss ich trotzdem jedes Blatt einzeln Drucken. Ich habe bereits in der Mappe dieses Makro laufen, wenn ich dieses anklicke dann wird mir Blockweise jedes Arbeitsblatt angezeigt , welches die entsprechende Anfangsbezeichnung trägt. Kann mir dann alle zu druckende Blätter aus dem Arbeitsblatt anschauen, alles mit 0 wird aussortiert. Dann springt das nächste in die Vorschau und immer das gleiche Prozedere. Der Unterschied ist das es hier in 5er Schritten geht
und es zwei zu überprüfende Zellen gibt. Es hat auch bloss 27 Zeilen.
Nun habe ich mit verschiedensten Varianten dieses Makro auf diesen Fall anzupassen. Leider ohne Erfolg. Ständig Fehlermeldungen. Vielleicht kannst Du mir einen Weg weisen wie ich dieses anpassen kann. Wie gesagt die Lieferseiten haben 5 Spalten und 43 Zeilen.
Public Sub Packzettel_drucken_Pack8()
Dim i As Long, ws As Worksheet, raWeg As Range

For Each ws In ThisWorkbook.Worksheets
    If ws.Name Like "Packzettelh*" Then
        With ws
            For i = 5 To 126 Step 7
                If WorksheetFunction.Sum(.Cells(4, i), .Cells(20, i)) > 0 Then
                    If raWeg Is Nothing Then
                        Set raWeg = .Cells(4, i).Offset(-3, -4).Resize(28, 7)
                    Else
                        Set raWeg = Union(raWeg, .Cells(4, i).Offset(-3, -4).Resize(28, 7))
                    End If
                End If
            Next i
            If Not raWeg Is Nothing Then
                raWeg.PrintPreview
            End If
        End With
    End If
     Set raWeg = Nothing
Next ws
        
Set raWeg = Nothing
End Sub

Für Deine Mühe danke ich im voraus.

LG Robert


Anzeige
AW: Druckmakro
14.06.2023 10:53:06
Robert Pilz
Hallo Rudi!

Ich konnte nun doch noch was zusammen basteln was so funktioniert wie ich es wollte. Dank Deiner Hilfe:

Ich danke Dir von ganzen Herzen

LG Robert

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige