Moin zusammen,
ich weis, das Thema wurde hier schon behandelt, jedoch bringt mich keiner der Threads zur Lösung meines Problems.
Ich habe in meinem workbook 15 Tabellenblätter, die ich in einem userform per Checkbox zum pdf-export auswählen kann. Soweit so gut, die Syntax für den Export funktioniert auch für einzelne Tabellenblätter, jedoch nicht für meine String-variable.
Doch zuerst zum Code. Ich erzeuge ein string-array, welches die Tabellenblattnamen der Checkboxen aus dem UserForm enthält.
Das Array sieht also vom Inhalt ca. so aus: sheetarray()={Januar, Februar, Oktober, Jahresübersicht}
Anschließend erzeuge ich mit folgender Schleife daraus einen String: (die Variable Counter wird vorher bei jedem neuen Eintrag ins array erhöht und dient als "Füllstandsanzeige" des arrays)
For i = 0 To (counter)
If i = 0 Then sheetstring = sheetstring & Chr(34) & sheetarray(i) & Chr(34)
If i > 0 Then sheetstring = sheetstring & ", " & Chr(34) & sheetarray(i) & Chr(34)
Next i
Dieser String macht aus meinem Beispielarray den String
"Januar", "Februar", "Oktober", "Jahresübersicht"
Diesen lasse ich mir danach in einer MsgBox anzeigen und kann so sicher sein, dass er richtig ist.
Nun möchte ich mithilfe von Sheets(Array(sheetstring)).Select diese Blätter auswählen, um sie als pdf zu exportieren. Leider kommt bei diesem Befehl der Laufzeitfehler 9. Wenn ich statt der Variable sheetstring manuell den String eintrage (also Sheets(Array("Januar", "Februar", "Oktober", "Jahresübersicht")).Select), exportiert Excel die genannten Tabelleblätter anstandslos in eine gemeinsame pdf.
Da ich keine if- oder case- schleife mit sämtlichen Kombinationsmöglichkeiten schreiben möchte, bin ich auf der Suche nach einer eleganten Möglichkeit. ein Sheets(Array(sheetarray(0) & ", " & sheetarray(1) & usw...)).Select erscheint mir wenig sinnvoll, da ich dieses ja nicht variabel ist.
Meine Vermutung ist, dass vba den gesamten String in Anführungszeichen einfügt, also als:
Sheets(Array(""Januar", "Februar", "Oktober", "Jahresübersicht"")).Select
Ein Abändern der Schleife in:
For i = 0 To (counter)
If i = 0 Then sheetstring = sheetstring & sheetarray(i)
If i > 0 Then sheestring = sheetstring & Chr(34) & ", " & Chr(34) & sheetarray(i)
Next i
schafft leider keine Abhilfe. Damit wollte ich einen String erzeugen, der am Anfang und Ende keine Anführungszeichen besitzt:
Januar", "Februar", "Oktober", "Jahresübersicht
Eine Adressierung der Tabellenblätter über die Nummern kommt für mich nicht in Frage, abgesehen davon gehe ich auch davon aus, dass dort das gleiche Problem auftreten würde...
Gibt es eine elegante Lösung für mein Problem?
Vielen Dank im Voraus für eure Bemühungen!