PDA

Vollständige Version anzeigen : Mit Button auf Tabellenblatt springen


Sonnenlicht
02.10.2016, 20:45
Hi,

ich möchte einen Button in Excel erstellen, welcher bei Klick auf ein anderes Tabellenblatt springt. Auf welches Tabellenblatt gesprungen werden soll, wird zuvor mit Hilfe des Formularsteuerelements "Listenfeld", in dem alle Tabellenblätternamen aufgelistet sind, ausgewält.

Code für das Springen habe ich

Private Sub CommandButton1_Click()
Worksheets("Tabelle1").Activate
End Sub

doch wie bekomme ich das "Tabelle1" meine Auswahl beim Listenfeld ist?

Gruß Sonnenlicht

Hajo_Zi
02.10.2016, 20:48
Worksheets(cstr(listbox1)).Activate

<img src="http://Hajo-Excel.de/images/grusz1.gif" align="middle" height="40" alt="Grußformel"><a href="http://Hajo-Excel.de/index.htm"><img border="0" src="http://Hajo-Excel.de/images/logo_hajo3.gif" align="middle" height="40" alt="Homepage"></a>

Sonnenlicht
02.10.2016, 21:02
Hi,

zeigt mir immer Laufzeitfehler '9' an. Ich habe auch keine Listbox sondern ein Listenfeld geht das dan trotzdem in Kombi mit dem Button? Habe auch ausprobiet statt listbox - listenfeld zu nehmen, aber dann wieder Laufzeitenfehler.
Und wenn wie bekomme ich eine listbox mit werten aus einer Tabelle gefüllt. Bei Listenfeld geht das ja ganz einfach. Habe leider kaum Ahnungvon VBA.

Danke aber erstmal! Gruß Sonnenlicht

Hajo_Zi
02.10.2016, 21:05
Ich baue keine Datei nach. Die Zeit hat schon jemand investiert.

Ein Nachbau sieht meist anders aus als das Original.

Der Name einer hochgeladenen Mappe wird im Beitrag automatisch angezeigt, sodass es bei Verwendung von aussagekräftigen Namen leichter fällt, sie später im Ablageordner wiederzufinden und sie gedanklich einem bestimmten Thema zuzuordnen. Namen wie Test, Mappe, Beispiel usw. sind so allgemein, dass eine Zuordnung zu einem Thema unmöglich gemacht wird.

<img src="http://Hajo-Excel.de/images/grusz1.gif" align="middle" height="40" alt="Grußformel"><a href="http://Hajo-Excel.de/index.htm"><img border="0" src="http://Hajo-Excel.de/images/logo_hajo3.gif" align="middle" height="40" alt="Homepage"></a>

Sonnenlicht
02.10.2016, 21:51
ich glaube ich habe mich etwas falsch ausgedrückt:(

1. Ich habe eine Dokumenten Oberfälche (keine Userform)
2. Eigentlich wollte ich mit einer Schaltfläche auf ein anderes Tabellenblatt
springen, welches (das Tabellenblatt) zuvor in einem Listenfeld ausgewählt
wird.

Ich glaube, dass das aber nicht geht, da ich mit einer Schaltfläche nicht "springen" kann - glaube ich. Und ein Listenfeld und eine Befehlsachaltfläche geht auch nicht -oder? Wie gesagt ich habe keine Ahnung von VBA.

Ich möchte keine Userform haben.

Luschi
02.10.2016, 22:46
Hallo Sonnenlicht,

hier mal 1 Beispiel!

Gruß von Luschi
aus klein-Paris

Sonnenlicht
02.10.2016, 23:56
Hi,

danke schön. Ich braue es jedoch in etwas anderer Forum bzw. habeich ein Formular Listenfeld. Habe mal in deinem Bsp. meine Voraussetzungen reingepackt jetzt bräuchte ich dazu ein nur ein Button. :(

Gruß Sonnenschein

Luschi
03.10.2016, 10:44
Hallo Sonnenlicht,

hier meine Änderungen mit ein paar Kommentaren im Vba-Code.

Gruß von Luschi
aus klein-Paris

Hasso
03.10.2016, 11:19
2. Eigentlich wollte ich mit einer Schaltfläche auf ein anderes Tabellenblatt springen, welches (das Tabellenblatt) zuvor in einem Listenfeld ausgewählt wird.Warum so kompliziert? Klicke doch einfach auf den Reiter des gewünschten Tabellenblatts! Da brauchst du keinen Button und keine Auswahlliste.

Storax
03.10.2016, 11:35
Man könnte man ja die "internen" Dialoge verwenden
Application.CommandBars("Workbook Tabs").ShowPopUpoder falls man mehr als 16 sichtbare Blätter hatApplication.CommandBars("Workbook Tabs").Controls(16).Execute

Sonnenlicht
03.10.2016, 15:21
Hi,

bei über 40 Tabellenblätter. Habe ich mir gedacht, dass es einfacher mit einem Button wäre.

Gruß Sonnenlicht

RPP63neu
03.10.2016, 15:44
Moin Sunlight!
Hast Du denn mal den/die Code(s) von Storax ausprobiert?
(wobei der erste dem Rechtsklick auf die Blattnavigation "unten links" entspricht)
Schon mal über ein "Inhaltsverzeichnis" mit Hyperlinks nachgedacht?

Gruß Ralf

Hasso
03.10.2016, 15:52
Hallo Luschi,

ich würde das ganz ohne Button machen. Die Liste in B2 erzeugen (allerdings würde ich dafür nicht das Workbook_Open nehmen sondern das Worksheet_Activate des Blatts "Start", falls während der Sitzung noch ein neues Blatt erzeugt oder eines gelöscht wird) und dann einfach in der Liste das Blatt auswählen:Private Sub Worksheet_Activate()
AuswahllisteErstellen
End Sub

Option Explicit

Sub AuswahllisteErstellen()

Dim ws As Worksheet
Dim s As String

For Each ws In ThisWorkbook.Worksheets
If ws.Name <> "Start" Then
'sammeln der Tabellennamen für die Gültigkeitsliste (Validation)
s = s & ws.Name & ","
End If
Next ws
Range("B2").Select
With Selection.Validation
.Delete
.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _
xlBetween, Formula1:=s
End With
End Sub
Private Sub Worksheet_Change(ByVal Target As Range)

If Target.Address = "$B$2" Then Worksheets(Target.Text).Activate

End Sub

Sonnenlicht
03.10.2016, 16:02
Hi,

ja ich habe den Code von Storax ausprobiert (übrigens vielel vielen Dank Storax!). Doch es ist so, dass ich eine Suchmaske = ein Tabellenblatt (keine Userform) habe auf der der Anwender schon gewisse Daten auswählen kann um danach in der gesamten Arbeitsmappe (in alle 40 Tabellenblätter) zu suchen bzw. sich das Suchergebnis unterhalb der Schumaske anzeigen zu lassen. Da der Anwender eh schon angeben muss in welchen Tabellenblatt (Tabellenblätter haben alle Stadt namen) bzw. von welcher Stadt er die Daten haben will. wollte ich das der Anwender nicht noch einmal die Stadt auswählen muss.
Leider stehen meine Stadt namen in einem Listenfeld (formularsteuerelement) nicht in einer Listbox und auch nicht in einem DropDown-Listenfeld. Eigentlich bräuchte ich nur das Bsp. was Luschi hat wobei hier nicht auf die Werte im DropDown-Listenfeld zugegriffen wird, sonden auf ein Listenfeld (formularsteuerelement).

Gruß Sonnenlicht:(

Hasso
03.10.2016, 16:08
Hallo Sonnenlicht,

dann zeig uns doch einfach mal deine Originalmappe - es müssen ja nicht alle 40 Blätter enthalten sein, aber auf jeden Fall dein Listenfeld (Formularsteuerelement)!

Sonnenlicht
03.10.2016, 16:17
Hi,

Datei ist nur eine gekürtzte Version!
Bitte bei Tabellenblatt Suche dort möchte ich den Button haben, wenn oben eine "Gemeinde" ausgewählt ist und (tut mir echt leid! Aber diese Datei ist sozusagen meine Basteldatei) jetz einfach im "Gesamter Datensatz" ausgewält (=wahr), dann zum Tabellenblatt ausgewälten Tabellenblatt springen.

Button habe ich jetzt einfach raus gelöscht usw. hatte zu viel vers. "Tests":mad:

Sorry Datei sieht mittlerweile echt schrecklich aus:(

Hasso
03.10.2016, 17:35
Hallo Sonnenlicht,

wenn du statt des Formularsteuerelements ein AciveX-Listenfeld nehmen würdest, wäre das kein Problem:Option Explicit
Private Sub Worksheet_Activate()
OrteInListboxEintragen
End Sub
'-----------------------------------------------------------------------------
Sub OrteInListboxEintragen()

Dim wksBlatt As Worksheet
Dim intListenplatz As Integer

For Each wksBlatt In ActiveWorkbook.Worksheets
If Application.WorksheetFunction.CountIf(Worksheets("Datenbasis").[Gemeinden], wksBlatt.Name) Then
ListBox1.AddItem wksBlatt.Name, intListenplatz
intListenplatz = intListenplatz + 1
End If
Next wksBlatt

End Sub
'-----------------------------------------------------------------------------
Private Sub ListBox1_Click()
Debug.Print ListBox1.Text
Worksheets(ListBox1.Text).Activate
End Sub

Luschi
03.10.2016, 17:39
Hallo Sonnenlicht ,

was gefällt Dir an meiner Lösung:

http://www.ms-office-forum.net/forum/showthread.php?t=336001/#8

nicht?

fragt sich Luschi
aus klein-Paris

Sonnenlicht
03.10.2016, 17:55
Hi Luschi,

in deinem Beispiel hast du ein DropDown-Listenfeld. Ich jedoch habe ein Listenfeld (Entwicklertool-Forumularsteuerelement) mit dem mein Button funktionieren müsste.

Ansonsten gefällt mir deine Lösung sehr gut:)

Gruß Sonnenlicht

Sonnenlicht
03.10.2016, 18:02
Hi Hasso,

habe ich befürchtet. Nur leider greift auf mein Listenfeld schon ein Code darauf zu, welcher mir aktuelle Tabellen (welche sich in den Gemeinden (einzelen Tabellenblätter) befinden) als Bildausschnitt wieder gibt.

Wäre ja zu schön gewessen:) Na werde mal schauen das ich dass umgebastelt bekomme.

Vielen Dank trozdessen Gruß :sun:

Sonnenlicht
03.10.2016, 18:38
Hi Hasso,

habe deinen Code in meine Hauptdatei eingefügt. Da ich mich mit VBA so gut wie gar nicht aus kenne, hätte ich noch einige Fragen.

1. Bei mit ist es so, dass ich zu erst auf ein anderes Tabellenblatt klicken muss,
und dann istwird die Listbox erst gefüllt. Hat wohl mit dem "Change" zu tun.
Wie wird die Listbox schon zu Anfang gefüllt?

2. Jetzt klicke ich auf den Namen der Gemeinde in der Listbox, damit er in das
entsprechende Tabellenblatt geht. Wie ermögliche ich diesen sprung erst
durch eine abfrage ob ein Optionsfeld den Wert Wahr hat und dann soll der
Sprung erst durch Klick auf einem Button (eigens dafür erstellten Button)
erfolgen.

Gruß Sonnenlicht und vielen Dank für den bisherigen Code