wie schon erwähnt, habe wenig Erfahrung mit Checkboxen oder Optionbutton. Habe auch im Web nicht wirklich viel gefunden.
Zitat: Somit konnte ich nur eine Lösung mit Worksheets("Tabelle... entwickeln
Wo ist den deine Lösung?
Grüße aus Bremen
Bernie
"Wenn du jemanden triffst ohne lächeln, schenke ihm deins !!!"
MS Office 2016 Pro 32bit - Win 10 Pro 64 bit Haftungshinweis: Trotz sorgfältiger inhaltlicher Kontrolle übernehmen ich keine Haftung für die Inhalte externer Links. Für den Inhalt der verlinkten Seiten sind ausschließlich deren Betreiber verantwortlich.
28.02.2015, 00:48 (Dieser Beitrag wurde zuletzt bearbeitet: 28.02.2015, 00:50 von atilla.)
Hallo Bernie,
das war doch nicht ganz durchdacht.
Bitte den gesamten Code hinter der Userform löschen und den unten stehenden einfügen:
Code:
Option Explicit
Private Sub CommandButton1_Click()
Dim i As Long, lngZ As Long
'alle Tabellen in Spalte D drucken
With Sheets("alleTabellen")
lngZ = .Cells(.Rows.Count, 4).End(xlUp).Row
For i = 2 To lngZ
Sheets(.Cells(i, 4).Value).PrintOut
Next i
'alle in der Listbox ausgewählten Tabellen drucken
For i = 0 To Me.ListBox1.ListCount - 1
If Me.ListBox1.Selected(i) = True Then Sheets(Me.ListBox1.List(i, 1)).PrintOut
Next i
End With
End Sub
Private Sub UserForm_Initialize()
Dim i As Long, k As Long
Dim lngZ As Long, lngA As Long
Dim arr()
With Sheets("alleTabellen")
lngZ = .Cells(.Rows.Count, 1).End(xlUp).Row + 1
lngA = Application.CountIf(.Columns(3), "X")
If lngA > 0 Then
ReDim arr(lngA - 1, 1)
For i = 2 To lngZ
If UCase(.Cells(i, 3).Value) = "X" Then
arr(k, 0) = .Cells(i, 2).Value
arr(k, 1) = .Cells(i, 1).Value
k = k + 1
End If
Next i
With Me.ListBox1
.List = arr
.ColumnCount = 2
.ColumnWidths = "100;0"
End With
End If
End With
End Sub
leider komme ich erst jetzt dazu dir zu antworten.
Ich weiß nicht, ob ich alles richtig verstanden hatte mit deinem Codebeispiel.
Es sind insgesamt wohl 48 Tabellenblätter, die gedruckt werden sollen, davon 12 feste Tabellenblätter.
Die Arbeitsmappe enthält neben den auszudruckenden Tabellenblättern noch einige Tabellenblätter die als Hilfstabellen dienen und nicht ausgedruckt werden.
For lngC = 13 To 48
If Me.Controls("CheckBox" & lngC).Value Then Worksheets("vntDruckeTab" & lngC + 12).PrintOut
Next lngC
End Sub
So hatte ich dich verstanden!
Bekomme Fehlermeldung ...
Code:
("vntDruckeTab" & lngC + 12).PrintOut
..."Index außerhalb gültigen Bereichs".
Grüße aus Bremen
Bernie
"Wenn du jemanden triffst ohne lächeln, schenke ihm deins !!!"
MS Office 2016 Pro 32bit - Win 10 Pro 64 bit Haftungshinweis: Trotz sorgfältiger inhaltlicher Kontrolle übernehmen ich keine Haftung für die Inhalte externer Links. Für den Inhalt der verlinkten Seiten sind ausschließlich deren Betreiber verantwortlich.
ich habe den Eindruck, dass ich mich falsch ausgedrückt hatte. Ich verstehe leider nicht wie ich dein Beispiel auf meine Belange umrüsten kann. Bei mir wird ausschließlich aus den UserFormen gearbeitet. Tabelle sollen überhaupt nicht sichtbar sein.
Kurz zu meiner Vorstellung: In der Arbeitsmappe befinden sich Datentabellen und Drucktabellen. Jede Tabelle hat einen Namen. Ausgeruckt werden (aktueller Stand) immer 12, weitere 36 Tabellen (aktueller Stand) sollen zur Auswahl stehen und der Anwender soll die Auswahl in einer Userform treffen, nicht auf einem Tabellenblatt. Anschließend die Auswahl drucken und/oder Druckvorschau Analog der Mustertabelle.
Grüße aus Bremen
Bernie
"Wenn du jemanden triffst ohne lächeln, schenke ihm deins !!!"
MS Office 2016 Pro 32bit - Win 10 Pro 64 bit Haftungshinweis: Trotz sorgfältiger inhaltlicher Kontrolle übernehmen ich keine Haftung für die Inhalte externer Links. Für den Inhalt der verlinkten Seiten sind ausschließlich deren Betreiber verantwortlich.
vntDruckeTab ist eine Variable, die kannst Du nicht innerhalb von zwei Anführungszeichen verwenden.
bei vntDruckeTab handelt es sich um ein Datenfeld, dessen Index in der Regel mit der 0 beginnt, ergo ist + 12 wenn die Schleife von 13 bis 48 geht, der falsche Weg.
Mache es 'so ähnlich'
Code:
(vntDruckeTab(lngC - 13)).PrintOut
so ähnlich deshalb weil deine Schleife von 13 bis 48 geht und somit 36 mal durchlaufen wird. Jetzt die Frage: Wieviele Elemente umfasst deine Vairable vntDruckeTab?
Code läuft durch, nimmt aber nur die neu angewählten Checkboxen ohne die festen 12 im Array. Wo ist mein Fehler?
Code:
Private Sub drucken_Click()
Dim vntDruckeTab As Variant
Dim lngC As Long
vntDruckeTab = Array("Deckblatt", "Inhalt", "Vorwort", "Versicherungs-Check", _
"Bedarfsanalyse", "Firmenvorstellung", "Personendaten", "Berufs- und Bankdaten", _
"Private Kapitalversicherungen", "Private Sachversicherungen", _
"Einnahmen und Ausgaben", "Vermögen und Verbindlichkeiten")
For lngC = 13 To 48
If Me.Controls("CheckBox" & lngC).Value Then Worksheets(vntDruckeTab(lngC - 13)).PrintOut
Next lngC
End Sub
Grüße aus Bremen
Bernie
"Wenn du jemanden triffst ohne lächeln, schenke ihm deins !!!"
MS Office 2016 Pro 32bit - Win 10 Pro 64 bit Haftungshinweis: Trotz sorgfältiger inhaltlicher Kontrolle übernehmen ich keine Haftung für die Inhalte externer Links. Für den Inhalt der verlinkten Seiten sind ausschließlich deren Betreiber verantwortlich.
könntest Du bitte eine Datei mit den tatsächlichen Tabellennamen und einer Beschreibung welche immer und welche pro aktivierter Checkbox gedruckt werden sollen, hochladen?
die gelben Tabellen sind Datenablage, die grünen sollen gedruckt werden, davon sind die ersten 12 als feste Ausdruckvorgabe (1=Deckblatt und 12=Vermögen und Verbindlichkeiten) die restlichen grünen (können auch mit der Zeit noch mehr werden) sind wahlweise per Chechbox auszuwählen. Die roten sind Hilfstabellen und werden nicht ausgedruckt, ebenso wie die gelben.
hier die Musterdatei:
Grüße aus Bremen
Bernie
"Wenn du jemanden triffst ohne lächeln, schenke ihm deins !!!"
MS Office 2016 Pro 32bit - Win 10 Pro 64 bit Haftungshinweis: Trotz sorgfältiger inhaltlicher Kontrolle übernehmen ich keine Haftung für die Inhalte externer Links. Für den Inhalt der verlinkten Seiten sind ausschließlich deren Betreiber verantwortlich.