Hallo Stefan,
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?
Hallo Bernie,
ich habe unten eine Beispieldatei eingestellt.
In der Datei findest Du ein paar Erklärungen.
[attachment=1611]
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
Hallo Bernie,
(27.02.2015, 23:05)Bernie schrieb: [ -> ]Wo ist den deine Lösung?
hast Du den Code aus den
Beitrag 17 nicht gesehen?
Hallo Stefan,
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.
Code:
Private Sub CommandButton1_Click()
Dim vntDruckeTab As Variant
Dim lngC As Long
vntDruckeTab = Array("AdrDeckblatt", "AdrInhalt", "AdrVorwor", "AdrVersCheck", "AdrBedarf", "AdrFirma", _
"AdrPerson", "AdrBerufBank", "AdrPrivVers", "AdrPrivVersSach", "AdrEinkommen", "AdrVermögen")
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".
Hallo Atilla,
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.
Hallo Bernie,
(02.03.2015, 11:52)Bernie schrieb: [ -> ]Bekomme Fehlermeldung ...
Code:
("vntDruckeTab" & lngC + 12).PrintOut
..."Index außerhalb gültigen Bereichs".
so geht es auch nicht.
- 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:
?Ubound(vntDruckeTab)
im Direktfenster und Du weißt Bescheid.
Hallo Stefan,
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
Hallo Bernie,
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?
Hallo Stefan,
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: