ein Greenhorn braucht mal Eure Hilfe.
Ich habe eine Mappe mit vielen Tabellen. Darunter sind mehrere für einen
Monat. Und ein Jahr hat ja bekanntlich zwölf Monate. Also eine ganze
Menge Tabellen. Nun dachte ich mir ich blende einfach per VBA Makro alle
Tabellenblätter aus, die ich im Moment nicht nicht brauche. Also im
Februar Februar sichtbar und alle anderen unsichtbar. Doch bevor die
Pferde mit Euch durchgehen. Nein es muss nicht auch noch geprüft werden
welches ist der aktuelle Monat und blende auf Grund dessen alle anderen
Tabellen aus. Auch diese muss man ab und zu noch mal bearbeiten.
Eigentlich würde es reichen in einer Tabelle alle Buttons für den
aktuelle Monat vorrätig zu haben. Und je nach dem für welchen
"Monats-Button" man sich entscheidet werden halt die anderen
Monats-Tabellen ausgeblendet. Damit die Tabelle mit der
Auswahlmöglichkeit erscheint dachte ich an ein "AutoOpen".
Doch wie müsste dann das Makro aussehen damit ich das wie ich es vorhabe
realisieren kann?
Da sein Ihr nun gefragt. Und wenn Ihr Fragen bezüglich meiner
Vorstellungen habt dann Fragt ruhig. Ich hoffe ich habe mich
verständlich ausgedrückt.
Vielen Dank schon einmal.
Berthold
Einfacher zu realisieren als die Button wäre es, beim öffnen
(auto_open) den Monat (zB als Zahl) abzufragen und damit die Tabellen
ein-/auszublenden. Wäre das auch ok?
Gruß
stefan
Statt irgendwo zwölf Buttons anzulegen empfehle ich dir eine kleine
UserForm; gerade groß genug um eine ComboBox aufzunehmen. Diese
ComboBox wird beim Öffnen der Datei mit den Namen aller Blätter
gefüllt. Das aktuelle wird ausgewählt. Bei Änderung der Auswahl in der
ComboBox wird das entsprechnde Blatt sichtbar gemacht und alle anderen
unsichtbar.
Peter
VBA-Code for DieseArbeitsmappe:
--------------------------------
Private Sub Workbook_Open()
Dim wsh As Variant
UserForm1.ComboBox1.Clear
For Each wsh In Sheets
UserForm1.ComboBox1.AddItem wsh.Name
Next
UserForm1.ComboBox1.Value = ActiveSheet.Name
UserForm1.Show
End Sub
VBA-Code für UserForm1:
------------------------
Private Sub ComboBox1_Change()
Dim wsh As Variant
Sheets(Me.ComboBox1.Value).Visible = True
For Each wsh In Sheets
If wsh.Name <> Me.ComboBox1.Value Then
wsh.Visible = False
End If
Next
End Sub
hallo stefan,
ebend dieses wollte ich so nicht realisieren. die tabellennamen sind
fast schon frei gewählt. daher scheidet eine abfrage nach dem aktuellen
monat leider aus. was ich bereits gefunden hatte war ein
ActiveWindow.SelectedSheets.Visible = False , doch das betraf auch erst
einmal nur eine tabellenblatt und nicht all die die ich ausblenden
wollte. als nächstes kam hinzu, das dass ausgeblendete tabellenblatt ja
nicht active gesetzt werden konnte bzw. wieder eingeblendet werden konnte.
also wäre mir eine möglichkeit lieb per knopf druck einfach alle nicht
benötigten blätter einfach auszublenden.
gruss
Berthold
Hallo Peter,
ich muss leider mehrere Tabellenblätter die zu einem Monat gehören
bearbeiten. Daher finde ich Deinen Lösungsansatz nicht schlecht sonder
sogar sehr gut. Nur leider reicht es mir nicht immer nur ein Blatt
eingeblendet zu sehen. Auch wenn man eine Checkbox einsetzen würde so
müsste man doch jedesmahl erst all die Blätter aktivieren die ich just
in dem Moment brauche.
Gruss
Berthold
Code für Workbok_Open wie bei Peter, nur mit Listbox
Listbox-Eigenschaften: Multiselect auf 1 fmMultiSelectMulti setzen
auf dem Userform ein Button mit dem Code
Private Sub CommandButton1_Click()
For Each wsh In Worksheets
wsh.Visible = ListBox1.Selected(wsh.Index - 1)
Next
End Sub
Gruß
stefan
Dann bietet sich aber schon eine Reihe von Checkboxen oder
ToggleButtons an. Diese werden beim Öffnen der Mappe dynamisch erzeugt
und mit den Namen der Blätter belegt. Ihren Anfangszustand erhalten
sie in Übereinstimmung mit der Sichtbarkeit des dazugehörigen Blattes.
Wird bei einer Checkbox das Häkchen gesetzt, wird das Blatt
eingeblendet und auch gleich aktiviert.
Ich hab's mal hochgeladen (getestet mit Excel 2002).
http://home.arcor.de/peter.schleif/Blattauswahl.xls
Peter
Hallo Peter,
super Sache. Ich habe es mal in meine Mappe integriert. Es funktioniert
wunderbar. Leider verliere ich aber die Übersicht. Ich nutze pro Monat
ca. 8 Tabellenblätter. Das macht dann in der Übersicht UserForm1 eine
List von ca. 100 Einträgen. Kann man die Liste nicht auch mehrspaltig
gestalten? Damit wäre mir schon ein Stück weit geholfen. Und dann noch
eine Frage. Kann man das ganze auch so programmieren das die letzte
Einstellung erhalten bleibt?
Gruss
Berthold
http://home.arcor.de/peter.schleif/Blattauswahl2.xls
Ich hab' jetzt mal 8 Zeilen eingestellt. Danach beginnt eine neue
Spalte. Der Wert läßt sich einstellen; ebenso die Spaltenbreite und
die Zeilenhöhe:
Const zeilen = 8
Const spalten_breite = 60
Const zeilen_hoehe = 15
> Frage. Kann man das ganze auch so programmieren das die letzte
> Einstellung erhalten bleibt?
Das geschieht automatisch, wenn Du die Mappe speicherst. Excel merkt
sich den Zustand (die Sichtbarkeit) der einzelnen Blätter. Beim
erneuten Öffnen der Mappe werden die CheckBoxen dann gemäß der
Sichtbarkeit der zugehörigen Blätter vorbelegt:
Private Sub Workbook_Open()
UserForm1.Show
End Sub
UserForm1.Show feuert dann das Ereignis "UserForm_Initialize" ab, wo
diese Arbeit erledigt wird.
BTW: Falls Du eine eigene Userform anlegst und nur den Code aus meiner
Mappe reinkopierst, bitte in den Eigenschaften den Wert "ShowModal"
auf False setzen. Ich weiß nicht wie das per VBA geht.
Peter
Du
bist
mein
Held.
Danke. Danke. Danke.
Einfach perfekt. Dafür hätte ich noch einige schlaflose Nächte gebraucht.
Ganz besonderen Dank an Dich.
Berthold