Registriert seit: 10.04.2014
Version(en): 97-2019 (32) + 365 (64)
Hallöchen, hier mal der angepasste code für den Druckbereich. Ich habe aus dem Sprengstoff C4 jetzt C9 gemacht, damit geht's bis Spalte I, und "Print_Area" Durch "Druckbereich" ersetzt. Zitat:Sub DruckBereich() ActiveWorkbook.Names.Add Name:="Druckbereich", RefersToR1C1:= _ "='Label Bsp'!R2C1:R" & Cells(Rows.Count, 2).End(xlUp).Row & "C9" End Sub
. \\\|/// Hoffe, geholfen zu haben. ( ô ô ) Grüße, André aus G in T ooO-(_)-Ooo (Excel 97-2019+365)
Registriert seit: 03.10.2018
Version(en): 2016
keine Änderung, beim ausdrucken, werden alle 20 seiten wo die vorlagen drauf sind mit ausgedruckt.
Registriert seit: 11.04.2014
Version(en): Office 2007
Nochmals Hallo, mein letzter Beitrag ist wohl etwas untergegangen? (16.06.2020, 18:27)Pirat2015 schrieb: Code: Private Sub CommandButton1_Click() 'Variablendeklarationen - Integer (%) Dim icnt1% Dim sheet As Worksheet
Dim colCounter As Long Dim RowCounter As Long Dim multiplier As Long Dim Rowmultier As Long
multiplier = 2 colCounter = 0 RowCounter = 0 Rowmultier = 0
Application.Calculation = xlCalculationManual Application.ScreenUpdating = False 'Zieldate oeffnen Workbooks.Open Filename:="Pfad" 'Qelldatei wieder aktivieren Windows("Tabelle1.xlsm").Activate 'Schleife ueber Listeneintraege - Zaehlung beginnt bei 0! Dim druck As Variant druck = MsgBox("Please print Label", vbYes) For icnt1 = 0 To ListBox1.ListCount - 1 'Wenn Zeileneintrag gewaelt wurde, dann If ListBox1.Selected(icnt1) Then 'Mit dem Zielblatt With Workbooks("Tabelle1").Sheets("Test1") 'mit der ersten lleren Zelle (anhand Spalte 7) With .Cells(.Cells(.Rows.Count, 7).End(xlUp).Row + 1, 7) 'Eintraege der Listbox uebernehmen, Spalten 4 bis 7 - Zaehlung beginnt bei 0! .Value = ListBox1.List(icnt1, 0) .Offset(, 1) = ListBox1.List(icnt1, 1) '2 .Offset(, 4) = ListBox1.List(icnt1, 2) '3 '.Offset(, 12) = ListBox1.List(icnt1, 3) '4 .Offset(, 12).Value = CInt(Split(ListBox1.List(icnt1, 3))(0)) / 1 .Offset(, 12 + 1).Value = Split(ListBox1.List(icnt1, 3))(1) .Offset(, 28) = ListBox1.List(icnt1, 4) '5 .Offset(, 6) = ListBox1.List(icnt1, 5) '6 .Offset(, 29) = ListBox1.List(icnt1, 6) '7 .Offset(, 30) = ListBox1.List(icnt1, 7) '8 .Offset(, 31) = ListBox1.List(icnt1, 8) '9 .Offset(, 23) = ListBox1.List(icnt1, 9) '10 .Offset(, 38) = ListBox1.List(icnt1, 9) '10 .Offset(, 24) = ListBox1.List(icnt1, 10) '11 .Offset(, 22) = ListBox1.List(icnt1, 11) '12 If InStr(.Cells(.Rows.Count, 62), "PF80...") > 0 Then .Offset(, 1) = ListBox1.List(icnt1, 13) '13 Else .Offset(, 1) = ListBox1.List(icnt1, 12) '12 End If '.Offset(, 1) = ListBox1.List(icnt1, 12) '13 '.Offset(, 1) = ListBox1.List(icnt1, 13) '14 'beginnt bei Zelle 7 = 0 .Cells(.Rows.Count, -4) = "9" .Cells(.Rows.Count, 40) = "-" .Cells(.Rows.Count, 38) = "local" .Cells(.Rows.Count, 37) = "local" .Cells(.Rows.Count, 41) = Format(Date, "dd.mm.yyyy") 'mit diesen Code Abschnitt wird der Label bzw. Labels gefüllt druck = True Set sheet = ActiveWorkbook.Sheets("Label") 'label zellen sheet.Cells(Rowmultier + 1, multiplier) = ListBox1.List(icnt1, 12) sheet.Cells(Rowmultier + 2, multiplier) = ListBox1.List(icnt1, 1) sheet.Cells(Rowmultier + 3, multiplier) = ListBox1.List(icnt1, 2) sheet.Cells(Rowmultier + 4, multiplier) = ListBox1.List(icnt1, 3) sheet.Cells(Rowmultier + 5, multiplier) = ListBox1.List(icnt1, 14) sheet.Cells(Rowmultier + 6, multiplier) = ListBox1.List(icnt1, 11) sheet.Cells(Rowmultier + 7, multiplier) = ListBox1.List(icnt1, 9) sheet.Cells(Rowmultier + 7, multiplier + 2) = ListBox1.List(icnt1, 10) If colCounter < 1 Then colCounter = colCounter + 1 multiplier = multiplier + 5 Else RowCounter = RowCounter + 1 colCounter = 0 multiplier = 2 Rowmultier = Rowmultier + 7 End If 'Ende mit der ersten lleren Zelle (anhand Spalte 6) End With 'Ende Mit dem Zielblatt End With 'Ende Wenn Zeileneintrag gewaelt wurde, dann End If Next Unload Me Call DruckBereich Tabelle1.PrintPreview Dim labelrange As Range Set labelrange = sheet.Range("B1:D1000,G1:I100") labelrange.ClearContents 'Zieldatei aktivieren Application.ScreenUpdating = True Application.Calculation = xlCalculationAutomatic Windows("Tabelle1").Activate Unload Me MsgBox "Done" End Sub
vielleicht liegt ja hier der fehler. setze dir mal in der ersten Codezeile bzw. von mir aus auch beim Next einen Haltepunkt. Drücke dann auf die F8-Taste. Bemerkst Du dann was?
Gruß Stefan Win 10 / Office 2016
Registriert seit: 03.10.2018
Version(en): 2016
wenn ich auf next haltepunkt setze und mit f8 weiter mache, spring der code auf If ListBox1.Selected(icnt1) Then, dann wieder auf next
Registriert seit: 11.04.2014
Version(en): Office 2007
Hallo,
und dann weiter auf die F8-Taste klicken.
Gruß Stefan Win 10 / Office 2016
Registriert seit: 03.10.2018
Version(en): 2016
springt zwischen next und If ListBox1.Selected(icnt1) Then
Registriert seit: 11.04.2014
Version(en): Office 2007
Hallo,
wenn in der Listbox kein Eintrag selektiert ist, wird die Tabelle nicht gefüllt. Und das kannst Du eben durch weiteres Drücken der F8-Taste herausfinden. Wenn nie in den If-Zweig gesprungen wird, dann paßt dein Druckbereich nie.
Gruß Stefan Win 10 / Office 2016
Registriert seit: 10.04.2014
Version(en): 97-2019 (32) + 365 (64)
Hallo Stefan, meinerseits ist nix untergegangen. Ich hab nur erst mal die Fehler im Code für den Druckbereich ausgemerzt. Wenn der Druckbereich Label genannt wird dann wird das Blatt soweit es genutzt wird gedruckt, wenn man es nicht anders einschränkt, z.B. Druck der Auswahl. Der Druck muss in der deutschen Version Druckbereich heißen, aufzeichnen tut Excel aber leider und fälschlicherweise Print_Area. In englisch würde es damit laufen... Das mit der Datenübertragung aus der Listbox wäre dann Faust zweiter Teil. Da war ich erst mal bei den Daten auf dem Blatt
. \\\|/// Hoffe, geholfen zu haben. ( ô ô ) Grüße, André aus G in T ooO-(_)-Ooo (Excel 97-2019+365)
Folgende(r) 1 Nutzer sagt Danke an schauan für diesen Beitrag:1 Nutzer sagt Danke an schauan für diesen Beitrag 28
• Pirat2015
Registriert seit: 11.04.2014
Version(en): Office 2007
Hallo André, das passt aber nicht, wenn das Tabellenblatt Label nicht aktiv ist. Siehe die Antwort vom TE (16.06.2020, 21:53)Pirat2015 schrieb: keine Änderung, beim ausdrucken, werden alle 20 seiten wo die vorlagen drauf sind mit ausgedruckt. da gehört zumindest vor dem Cells noch das Worksheet. Code: Sub DruckBereich() ActiveWorkbook.Names.Add Name:="Druckbereich", RefersToR1C1:= _ "='Label Bsp'!R2C1:R" & Worksheets("Label Bsp").Cells(Rows.Count, 2).End(xlUp).Row & "C9" End Sub
Gruß Stefan Win 10 / Office 2016
Registriert seit: 17.04.2014
Version(en): MS Office 365(32)
Hallo André, (17.06.2020, 17:54)schauan schrieb: Der Druck muss in der deutschen Version Druckbereich heißen, aufzeichnen tut Excel aber leider und fälschlicherweise Print_Area. In englisch würde es damit laufen... das kann ich so nicht stehen lassen. :21: Code: Sub Makro2() With ActiveSheet .PageSetup.PrintArea = .UsedRange.Address Debug.Print .Names("Print_Area").Name Debug.Print .Names("Print_Area").NameLocal Debug.Print .Names("Druckbereich").Name Debug.Print .Names("Druckbereich").NameLocal End With End Sub
Gruß Uwe
|