Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Tabellenblätter ausblenden

7 views
Skip to first unread message

Berthold Erfkämper

unread,
Feb 26, 2008, 11:09:37 AM2/26/08
to
Hallo NG-Gemeinde,

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

stefan onken

unread,
Feb 26, 2008, 1:58:55 PM2/26/08
to
hallo Berthold,
was identifiziert den eine Tabelle als zu zB Januar gehörig? Steht der
Name Januar im Tabellenregister?

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

Peter Schleif

unread,
Feb 27, 2008, 5:37:31 AM2/27/08
to
Berthold Erfkämper schrieb:

>
> Eigentlich würde es reichen in einer Tabelle alle Buttons für den
> aktuelle Monat vorrätig zu haben.

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

Berthold Erfkämper

unread,
Feb 27, 2008, 11:26:42 AM2/27/08
to
stefan onken schrieb:

> hallo Berthold,
> was identifiziert den eine Tabelle als zu zB Januar gehörig? Steht der
> Name Januar im Tabellenregister?
>
> 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
>

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

Berthold Erfkämper

unread,
Feb 27, 2008, 11:42:54 AM2/27/08
to
Peter Schleif schrieb:

> Berthold Erfkämper schrieb:
>> Eigentlich würde es reichen in einer Tabelle alle Buttons für den
>> aktuelle Monat vorrätig zu haben.
>
> 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

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

stefan onken

unread,
Feb 27, 2008, 12:55:29 PM2/27/08
to
hallo Berthold,

>
> 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.
wie wäre es denn, wie von Peter vorgeschlagen, mit einem Userform, aber
stattdessen mit einer Listbox, in der alle Tabellen aufgelistet werden
und du alle markieren kannst, die eingeblendet bleiben sollen? Wenn du
aber nicht alle erst markieren möchtest, so verstehe ich deine Antwort
bei Peter hinsichtllich Checkboxen, sehe ich im Moment keinen anderen
Weg, dein Vorhaben zu realisieren.

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

Peter Schleif

unread,
Feb 27, 2008, 2:44:06 PM2/27/08
to
Berthold Erfkämper schrieb am 27.02.2008 17:42:
>
> ich muss leider mehrere Tabellenblätter die zu einem Monat gehören
> bearbeiten.

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

Berthold Erfkämper

unread,
Feb 28, 2008, 11:21:49 AM2/28/08
to
Peter Schleif schrieb:

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

Peter Schleif

unread,
Feb 28, 2008, 1:01:57 PM2/28/08
to
Berthold Erfkämper schrieb am 28.02.2008 17:21:
>
> Kann man die Liste nicht auch mehrspaltig gestalten?

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

Berthold Erfkämper

unread,
Feb 28, 2008, 1:26:03 PM2/28/08
to
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

0 new messages