Mehrere Tabellenblätter selektieren
 |
Betrifft: Mehrere Tabellenblätter selektieren
von: Andreas
Geschrieben am: 19.08.2004 09:00:44
Hallo zusammen,
Habe folgendes Problem:
Vor dem Drucken einer Exceldatei sollen die selektierten Blattnamen in eine Variable eingelesen werden und, nach dem Ausführen diverser Operationen, wieder selektiert werden, damit auch alle selektierten Blätter gedruckt werden.
Der Code sieht ungefähr so aus:
Private Sub Workbook_BeforePrint(Cancel As Boolean)
Dim sh As Worksheet
Dim Zaehler As Long
Dim Markiert As Variant
Zaehler = 0
Markiert = """"
For Each sh In ActiveWorkbook.Windows(1).SelectedSheets
Zaehler = Zaehler + 1
If Zaehler = 1 Then
Markiert = Markiert + sh.Name + """"
Else
Markiert = Markiert + "," + " " + """" + sh.Name + """"
End If
Next
-------------------------------------------------------------------
zwischen oberem und unterem Code werden diverse Arbeiten ausgeführt
-------------------------------------------------------------------
Sheets(Array(Markiert)).Select
Und genau in der obigen letzten Codezeile kommt der Debugger und meint, der Index sei ausserhalb des zulässigen Bereiches.
Weiss jemand wieso?
Die Variable "Markiert" enthält nach der Zuweisung der Blattnamen folgenden String:
"Blatt1", "Blatt2", "Blatt3"
mfg, Andreas
 |
Betrifft: AW: Mehrere Tabellenblätter selektieren
von: harry
Geschrieben am: 19.08.2004 10:03:39
hi andreas,
das kann so nicht funken. ein "Blatt1" liegt immer ausserhalb des gültigen index, da es nicht vorhanden ist, es heisst doch sicher Blatt1, oder?
ausserdem kann ich in deinem code kein array entdecken.
liebe grüße,
harry
Betrifft: AW: Mehrere Tabellenblätter selektieren
von: Andreas
Geschrieben am: 19.08.2004 10:42:55
Die Namen der Tabellenblätter lauten natürlich anders, ich habe dies nur als Beispiel gebraucht.
Der Code sollte so aussehen (3 Blätter zusammen selektieren), damit mich der Debugger nicht belästigt:
Sheets(Array("Blatt1", "Blatt2", "Blatt3")).Select
Die Werte "Blatt1", "Blatt2", "Blatt3" befinden sich nun aber in der Variablen "Markiert".
Wenn ich aber diese Variable in den Code integriere, erscheint der Debugger:
Sheets(Array(Markiert)).Select
Wie integriere ich diese Variable in obigen Code?
mfg, Andreas
Betrifft: AW: Mehrere Tabellenblätter selektieren
von: harry
Geschrieben am: 19.08.2004 11:22:17
meinte auch nicht den tatsächlichen namen, sondern die anführungszeichen. glaube nicht, dass du den codeteil Array("Blatt1", "Blatt2", "Blatt3") durch eine variable mit string ersetzen kannst. glaube, dass du die blätter mit
Dim Markiert() As Variant
ReDim Markiert(ActiveWindow.SelectedSheets.Count)
For Each sh In ActiveWindow.SelectedSheets
Zaehler = Zaehler + 1
Markiert(Zaehler) = sh.Name
Next
in ein array einlesen musst. beim markieren der blätter tüftle ich jetzt auch, funkt irgendwie noch nicht
Betrifft: AW: Mehrere Tabellenblätter selektieren
von: Andreas
Geschrieben am: 19.08.2004 12:07:45
Danke für den Tipp, erscheint mir logisch.
Wie gebe ich in einer msgbox den Inhalt der Variablen "Markiert" aus?
Ich möchte den Inhalt überprüfen.
Folgendes funktioniert nicht:
MsgBox "Markierte Blätter = " & Markiert()
Das Markieren der Blätter am Schluss funkt hier auch noch nicht.
mfg, Andreas
Betrifft: AW: Mehrere Tabellenblätter selektieren
von: harry
Geschrieben am: 19.08.2004 12:45:59
die namen kannst du mit einer schleife abrufen. man kann auch die blätter der reihe nach auswählen:
For i = 1 To Zaehler
Sheets(Array(Markiert(Zaehler))).Select
Next i
nur die mehrfachauswahl krieg ich noch nicht hin, aber ich arbeite dran. falls du es selbst findest, gib bitte bescheid, bevor ich vor verzweiflung depressionen bekomm :-)
Betrifft: AW: Mehrere Tabellenblätter selektieren
von: Andreas
Geschrieben am: 19.08.2004 13:19:07
OK, habe bis jetzt leider noch nichts gefunden.
Das wäre mir aber gar nicht recht, wenn Du wegen meinem Problem auch noch Depressionen bekommst ;-)
mfg, Andreas
Betrifft: AW: Mehrere Tabellenblätter selektieren
von: Andreas
Geschrieben am: 19.08.2004 15:37:58
Habs aufgegeben, eine vernünftige Lösung zu finden.
Der Code sieht jetzt so aus:
Dim sh As Worksheet
Dim Zaehler As Long
Zaehler = 0
Dim Markiert() As Variant
ReDim Markiert(ActiveWindow.SelectedSheets.Count)
Dim Blattzahl As Long
Blattzahl = ActiveWindow.SelectedSheets.Count
For Each sh In ActiveWindow.SelectedSheets
Zaehler = Zaehler + 1
Markiert(Zaehler) = sh.Name
Next
Diverse Operationen, Code ausgeschnitten....
If Blattzahl = 1 Then
Sheets(Markiert(1)).Select
End If
If Blattzahl = 2 Then
Sheets(Array(Markiert(1), Markiert(2))).Select
End If
If Blattzahl = 3 Then
Sheets(Array(Markiert(1), Markiert(2), Markiert(3))).Select
End If
Da die Anzahl Blätter in meiner Mappe bis zu 12 betragen kann, geht der Code weiter bis 12.
Ist ein wenig sehr umständlich, aber es funzt wenigstens.
mfg, Andreas
Betrifft: AW: Mehrere Tabellenblätter selektieren
von: harry
Geschrieben am: 19.08.2004 16:17:36
bin auch nicht weitergekommen, im array wird zwar alles richtig abgespeichert, aber die auswahl der mappen funkt nicht.
bis zum nächsten mal,
harry
Beiträge aus den Excel-Beispielen zum Thema "Mehrere Tabellenblätter selektieren"