Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1648to1652
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

Ausw

Ausw
10.10.2018 17:24:02
Michael
Hallo Excel Freunde,
ich hoffe ihr könnt mir wieder einmal helfen. Und zwar habe ich eine Tabelle mit Etiketten Label die ich ausdrucke. Das passt auch nur möchte ich wenn es möglich ist vorher auswählen können wie viele gedruckt werden sollen. ob 2 oder 5 oder 4 oder nur 1. Es sind 10 Labels und der Text in den Labels muss auch öfter gewechselt werden.
Hoffe ihr habt einen Rat für mich.
Danke schon mal
Lg Michael
https://www.herber.de/bbs/user/124548.xlsx

18
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Ausw
10.10.2018 17:25:22
Michael
Hallo Der Betreff heißt
"Auswahl vor dem Drucken"
Lg Michael
AW: Ausw
11.10.2018 11:13:09
UweD
Hallo
Code muss in "DieseArbeitsmappe"
Microsoft Excel Objekt DieseArbeitsmappe
Option Explicit 
 
Private Sub Workbook_BeforePrint(Cancel As Boolean) 
    Dim Anzahl As Integer, Z2 As Integer 
    Dim TB1, TB2 
    Set TB1 = ActiveWorkbook.ActiveSheet 
     
    On Error GoTo Fehler 
    Cancel = True 
     
    Anzahl = InputBox("Anzahl der zu druckenden Auskleber", "Drucken", 2) 
    If Anzahl < 1 Or Anzahl > 10 Then 
        MsgBox "Mengenfehler" 
        Exit Sub 
    End If 
 
    With Application 
        .ScreenUpdating = False 'Flackern verhindern 
        .EnableEvents = False   'Druckschleife verhindern 
        .DisplayAlerts = False  'keine Rückfragen 
    End With 
     
    Z2 = WorksheetFunction.RoundUp(Anzahl / 2, 0) * 10 'bis Zeile 
     
    If Anzahl Mod 2 = 1 Then 'ungerade 
         
        'rechten Bereich merken und temporär löschen 
        Sheets.Add After:=ActiveSheet 
        Set TB2 = ActiveSheet 
        TB1.Cells(Z2 - 10 + 1, 6).Resize(10, 4).Cut TB2.Cells(1, 1).Resize(10, 4) 
                        
    End If 
     
    'Druckbereich setzen 
    ActiveSheet.PageSetup.PrintArea = "$A$1:$I$" & Z2 
     
    'Ausdrucken 
    TB1.PrintOut , IgnorePrintAreas:=False 
 
    If Anzahl Mod 2 = 1 Then 'ungerade 
        'zurücklesen 
        TB2.Cells(1, 1).Resize(10, 4).Cut TB1.Cells(Z2 - 10 + 1, 6).Resize(10, 4) 
        TB2.Delete 
    End If 
     
    'Druckbereich zurücksetzen 
    TB1.PageSetup.PrintArea = "" 
 
    '*** Fehlerbehandlung 
    Err.Clear 
Fehler: 
    'Rücksetzen 
    With Application 
        .ScreenUpdating = True 
        .EnableEvents = True 
        .DisplayAlerts = True 
    End With 
    If Err.Number <> 0 Then MsgBox "Fehler: " & _
        Err.Number & vbLf & Err.Description: Err.Clear 
End Sub 
 

LG UweD
Anzeige
AW: Ausw
11.10.2018 12:14:21
Michael
Hallo Uwe
Danke für die schnelle Hilfe werde es dann später auf Arbeit gleich mal probieren ob es funktioniert.
Vielen Dank schonmal.
Lg Michael
AW: Ausw
11.10.2018 12:42:59
niclaus
Hallo Uwe
Schon wieder etwas gelernt: Druckbereich festlegen! Danke!
Dein Code funktioniert bestens, wenn die Anzahl Etiketten gerade ist. Nicht so richtig dann, wenn die Anzahl ungerade ist.
Und ich vermute, dass Michael auch hier die Option "Vertikal zentrieren" deaktivieren muss, damit die zu druckenden Etiketten beim Ausdruck in die richtigen Etiketten-Felder geraten.
Grüsse Niclaus
AW: Ausw
11.10.2018 14:12:59
UweD
Hallo
&gt&gt Nicht so richtig dann, wenn die Anzahl ungerade ist.
was geht denn nicht?
Bei mir klappt das bestens


&gt&gt Vertikal zentrieren" deaktivieren muss
ja. das Zentrieren ist bei vorgeschnittenen Etiketten störend
LG UweD
Anzeige
AW: Ausw
11.10.2018 14:39:54
Michael
Hallo ihr zwei Danke für die Hilfe es funktioniert super
wenn ich gerade Zahlen eingebe aber wenn ich 6 oder 8 eingebe druckt es mir den ganzen Zettel aus.
Und bei ungerade Zahlen auch der ganze zettel obwohl ich das Vertikal zentrieren ausgemacht habe.
Muss später nochmal schauen.
Trotzdem Danke
Lg Michael
AW: Ausw
11.10.2018 16:41:39
niclaus
Hallo Uwe
Ich hänge ein Printscreen der Druckvorschau an, nachdem ich 3 Etiketten zum Druck aufgegeben habe. Bei mir werden gedruckt die Etiketten 1 bis 3 und die Etiketten 5 bis 10.
Ich bin noch nicht dazugekommen, Deinen Code im Detail zu "studieren". Aber ich glaube, dieses Problem lässt sich leicht beheben.
Das Problem von Michael habe ich bei meinen Ausdrucken nicht: "wenn ich 6 oder 8 eingebe druckt es mir den ganzen Zettel aus."
Grüsse Niclaus
Userbild
Anzeige
AW: Ausw
11.10.2018 16:45:09
Michael
Hallo Niklaus
Das mit dem 6 oder 8 hat sich erledigt funktioniert aber der Rest ist wie bei deinem Bild
wenn ich drei oder fünf eingebe druck er es mir auch so aus.
Lg Michael
AW: Ausw
11.10.2018 17:02:41
niclaus
Hallo Uwe, hallo Michael
Ich glaube, ich habe die Lösung gefunden mit einem kleinen Umstellen im Makro
    'Druckbereich setzen
ActiveSheet.PageSetup.PrintArea = "$A$1:$I$" & Z2
If Anzahl Mod 2 = 1 Then 'ungerade
'rechten Bereich merken und tempor?r l?schen
Sheets.Add After:=ActiveSheet
Set TB2 = ActiveSheet
TB1.Cells(Z2 - 10 + 1, 6).Resize(10, 4).Cut TB2.Cells(1, 1).Resize(10, 4)
End If

Im Original hast Du, Uwe, zuerst die Bedingung "If Anzahl Mod 2 …" geschrieben, dann "Druckbereich setzen". Diese zwei Zeilengruppen habe ich umgestellt. So funktioniert es bei mir mit gerader wie mit ungerader Anzahl.
Deinen Code finde ich super! Grüsse Niclaus
Anzeige
AW: Ausw
11.10.2018 18:00:36
Michael
Hallo Niklaus
Also hab jetzt das Makro geändert geht aber immer noch nicht bei mir.
Lg Michael
AW: Ausw
11.10.2018 18:57:47
niclaus
Hallo Michael
Das ist seltsam! Was geht denn nicht? Bei mir klappt es wie gewünscht.
Ich hänge Dir meine Datei an. Ich habe in Deiner Tabelle "Vertikal zentrieren" deaktiviert. Den oberen Rand habe ich auf 1.8 gesetzt (statt 0). Diese Randeinstellung hängt sehr vom Drucker-Modell ab. Das müsstest Du auspröbeln und je nach Druckergebnis anpassen. Die Kopfzeile habe ich bei 0.8 belassen. - Im Code von Uwe habe ich einige Aenderungen gemacht.
Grüsse Niclaus
https://www.herber.de/bbs/user/124574.xlsm
Anzeige
AW: Ausw
12.10.2018 09:18:06
UweD
Hallo nochmal
Das Makro von Niclaus benutzt die Variable tabname
Ist aber oben auskommentiert;
unten wird es verwendet und läuft dann in den Fehler
LG UweD
AW: Ausw
12.10.2018 09:13:43
UweD
Hallo
Ich hänge ein Printscreen der Druckvorschau an
die Druckvorschau löst das Event noch nicht aus.
du kannst zum Testen den PDF-creator als Standarddrucker einstellen und dann direkt auf drucken gehen.
Evtl. hast du aber durch einen Fehler die Events NICHT WIEDER eingeschaltet.
Lass das einmal laufen
Sub onon()
    Application.EnableEvents = True
End Sub

Ich hab das makro nochmal ein wenig überarbeitet
Option Explicit
 
Private Sub Workbook_BeforePrint(Cancel As Boolean)
    Dim Anzahl As Variant, Z2 As Integer
    Dim TB1, TB2
    Set TB1 = ActiveWorkbook.ActiveSheet
     
    On Error GoTo Fehler
    Cancel = True
     
    Anzahl = InputBox("Anzahl der zu druckenden Etiketten", "Drucken", 2)
    
    If Not IsNumeric(Anzahl) Then
        MsgBox "Falsche Eingabe"
        Exit Sub
    End If
    
    If Anzahl < 1 Or Anzahl > 10 Then
        MsgBox "Mengenfehler"
        Exit Sub
    End If
 
    With Application
        .ScreenUpdating = False 'Flackern verhindern 
        .EnableEvents = False   'Druckschleife verhindern 
        .DisplayAlerts = False  'keine Rückfragen 
    End With
     
    Z2 = WorksheetFunction.RoundUp(Anzahl / 2, 0) * 10 'bis Zeile 
     
    If Anzahl Mod 2 = 1 Then 'ungerade 
         
        'rechten Bereich merken und temporär löschen 
        Sheets.Add After:=ActiveSheet
        Set TB2 = ActiveSheet
        TB1.Cells(Z2 - 10 + 1, 6).Resize(10, 4).Cut TB2.Cells(1, 1).Resize(10, 4)
                        
    End If
     
    'Druckbereich setzen 
    TB1.PageSetup.PrintArea = "$A$1:$I$" & Z2
     
    'Ausdrucken 
    TB1.PrintOut , IgnorePrintAreas:=False
 
    If Anzahl Mod 2 = 1 Then 'ungerade 
        'zurücklesen 
        TB2.Cells(1, 1).Resize(10, 4).Cut TB1.Cells(Z2 - 10 + 1, 6).Resize(10, 4)
        TB2.Delete
    End If
     
    'Druckbereich zurücksetzen 
    TB1.PageSetup.PrintArea = "$A:$I"
 
    '*** Fehlerbehandlung 
    Err.Clear
Fehler:
    'Rücksetzen 
    With Application
        .ScreenUpdating = True
        .EnableEvents = True
        .DisplayAlerts = True
    End With
    If Err.Number <> 0 Then MsgBox "Fehler: " & _
        Err.Number & vbLf & Err.Description: Err.Clear
End Sub

klappt bestens
5 St
Userbild
6 St
Userbild
9 St
Userbild
LG UweD
Anzeige
AW: Ausw
12.10.2018 09:55:33
Michael
Hallo Uwe
vielen dank für eure mühe werde es heute mittag gleich wieder ausprobieren ist immer blöd muss den code zu Hause kopieren in eine
extra Mappe und mit auf Arbeit nehmen da ich dort kein Internet am Pc habe.
Könntest du mir vielleicht auch die fertige Mappe wieder schicken.
Wäre super Danke
Lg Michael
AW: Datei
12.10.2018 10:53:33
Michael
Hi Uwe
Vielen vielen Dank
Teste es heut Mittag dann mal
Lg Michael
AW: Ausw
11.10.2018 12:04:39
niclaus
Hallo Michael
Ich habe Deine Datei angeschaut. Ich glaube, ohne VBA-Makros lässt sich das kaum machen. Wäre das eine Variante?
Meine Idee ist, dass das Makro folgendes macht:
· Eine Kopie Deiner Tabelle "Lackiert Etiketten" wird erstellt.
· Dort werden die Zeilen mit den nicht benötigten Etiketten ausgeblendet.
· Etwas komplizierter wird es, wenn die Anzahl der zu druckenden Etiketten ungerade ist. Aber auch das kriegt man hin.
Aber etwas musst Du unbedingt ändern in Deiner Tabelle "Lackiert Etiketten": Du hast unter Seite einrichten / Seitenränder die Option "Vertikal zentrieren" aktiviert. Das müsstest Du ändern: "Vertikal zentrieren" musst Du deaktivieren. Und dann die Seitenränder oben vergrössern, damit die Etiketten richtig ausgedruckt werden. Du kannst dann die abgeänderte Datei wieder hochladen, dann kann ich mich dahinter machen.
Grüsse Niclaus
Anzeige
AW: Ausw
11.10.2018 12:12:50
Michael
Hallo Niklaus
Danke für die Hilfe habe doch die Tabelle mit ran gehängt kannst du gerne ändern.
Lg Michael

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige