Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
704to708
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
704to708
704to708
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Sheetwechsel mit Scrolldown-Menü

Sheetwechsel mit Scrolldown-Menü
07.12.2005 11:14:18
Moni
Hallo ihr Lieben!
Ich sitze hier vor einer Aufgabe fürs Studium, die ich leider nicht gelöst bekomme.
Aber vielleicht könnt ihr mir ja helfen.
Es handelt sich um eine Exceldatei mit mehreren Sheets. Auf den einzelnen Sheets sind Daten von Fahrzeugen hinterlegt. Die Bezeichnung des Fahrzeugs befindet sich auf jedem Sheet in Zelle B3.
Nun soll sich auf dem ersten Sheet ein Scrolldown-Menu befinden, welches mir die ganzen Fahrzeugbezeichnungen auflistet. Durch klicken auf die gewünschte Bezeichnung soll Excel nun automatisch zum gewünschten Sheet springen.
Alleine das bekomme ich schon nicht gelöst.
Nun kommt aber noch hinzu, das manche Fahrzeuge mehrfach vorhanden sind. Wie könnte man das zusätzlich lösen?
Vielleicht durch ein zweites Scrolldown-Menu welches die mehrfach vorhandenen Fahrzeuge nochmals in Nummern unterteilt!? Diese Nummer gibt es nämlich auch auf jedem Sheet in Zelle B5 und die sind nie doppelt. (Es soll aber auf jeden Fall zuerst nach der Bezeichnung gesucht werden können)
Ich habe leider keine Ahnung wie ich das hinbekommen soll. Nehme mal an, das dazu viel Basic Wissen erforderlich ist!? Naja, damit kenne ich mich nur leider nicht so gut aus.
Ich wäre euch sehr dankbar, wenn ihr mir bei meinem Problem helfen könntet.
Viele Dank!!
Liebe Grüße,
Moni

21
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Sheetwechsel mit Scrolldown-Menü
07.12.2005 11:38:17
Matthias
Hallo Moni,
erzeuge auf dem ersten Sheet mit der Steuerelement-Toolbox eine ComboBox.
Kopiere dann diesen Code in die Mappe:
Ins Modul DieseArbeitsmappe:

Private Sub Workbook_Open()
Dim sh As Worksheet
Dim Cb As ComboBox
Dim i As Integer
Set Cb = Sheets(1).ComboBox1
Cb.Clear
For i = 2 To Sheets.Count
Cb.AddItem Sheets(i).Range("B3")
Next i
End Sub

Ins Tabellenblattmodul des ersten Sheets:

Private Sub ComboBox1_Change()
Sheets(ComboBox1.ListIndex + 2).Activate
End Sub

Gruß Matthias
Anzeige
AW: Sheetwechsel mit Scrolldown-Menü
07.12.2005 11:51:27
Moni
Vielen Dank für die schnelle Antwort!
Nur leider funktioniert das bei mir nicht.
Habe unter Extras-Makro-Visual Basic Editor auf die von dir angebebenen Module doppelt geklickt und dann jeweils den Code eingegeben.
Wenn ich nun im ersten Sheet auf die Combobox klicke, öffnet sich nichts, also es erscheinen nicht die Bezeichnungen.
Was habe ich nur falsch gemacht?
liebe Grüße
Moni
AW: Sheetwechsel mit Scrolldown-Menü
07.12.2005 11:52:55
Moni
muss ich nicht der ComboBox auch noch einen Code hinzufügen?
AW: Sheetwechsel mit Scrolldown-Menü
07.12.2005 11:57:31
Matthias
Hallo Moni,
schau mal:
https://www.herber.de/bbs/user/29020.xls
Gruß Matthias
Anzeige
AW: Sheetwechsel mit Scrolldown-Menü
07.12.2005 12:07:36
Moni
tja, genau so habe ich es gemacht. funktioniert aber trotzdem nicht... :-(
mir ist aber aufgefallen, das über deinen codes jeweils nochmal ein strich ist, und darüber steht "option explicit". das steht bei mir nicht da. liegt es vielleicht daran?
oder könnte es auch daran liegen, das manche bezeichnungen wie gesagt doppelt sind?
vielen dank!!
moni
AW: Sheetwechsel mit Scrolldown-Menü
07.12.2005 12:13:36
Matthias
Hallo Moni,
oder könnte es auch daran liegen, das manche bezeichnungen wie gesagt doppelt sind?
Ist denn die Kombination Blattname + Wert aus B3 eindeutig?
Dann so:

Private Sub Workbook_Open()
Dim sh As Worksheet
Dim Cb As ComboBox
Dim i As Integer
Set Cb = Sheets(1).ComboBox1
Cb.Clear
For i = 2 To Sheets.Count
Cb.AddItem Sheets(i).Name & " " & Sheets(i).Range("B3")
Next i
End Sub

Aber das vordringliche Problem ist ja, dass überhaupt nichts passiert...
Kommt denn nicht mal eine Fehlermeldung? Hast du die Mappe mal geschlossen und geöffnet (denn erst dass wird Workbook_Open auch ausgeführt!)?
Gruß Matthias
Anzeige
AW: Sheetwechsel mit Scrolldown-Menü
07.12.2005 12:39:13
Moni
Oh, ich glaube das war mein Fehler!
Die Bezeichnung in Zelle B3 ist nicht mit dem Blattnamen identisch.
Mit dem neuen Code funktioniert es! Super, vielen Dank!
Bin jetzt schonmal einen riesen Schritt weiter!
Jetzt besteht nurnoch das Problem, das manche Bezeichnungen ja doppelt sind. Diese unterscheiden sich nur in einer so genannten F-Nummer die in Zelle B5 steht (jedes einzelne Blatt hat eine andere "F-Nummer"). Wie könnte man das am besten lösen? Gibt es die möglichkeit zwei Werte, also Bezeichnung und F-Nummer, in der Kombobox anzugeben?
AW: Sheetwechsel mit Scrolldown-Menü
07.12.2005 12:42:14
Matthias
Hallo Moni,
du kannst so viele Werte kombinieren wie du willst:

For i = 2 To Sheets.Count
Cb.AddItem Sheets(i).Name & " " & Sheets(i).Range("B3") & " - F-Nummer:" & Sheets(i).Range("B5")
Next i

Gruß Matthias
Anzeige
AW: Sheetwechsel mit Scrolldown-Menü
07.12.2005 12:49:46
Moni
Ok, das wäre ja schonmal eine gute Möglichkeit.
Hoffe das ist jetzt nicht zu viel verlangt, aber wäre es auch möglich die doppelten Bezeichnungen sozusagen herauszufiltern (also so das keine doppelten in der Kombobox auftauchen) und wenn man dann eine Bezeichnung anklickt die eigentlich doppelt vorhanden ist, in einem zweiten Auswahlfenster die Unterscheidungen in der F-Nummer erscheinen und man dort die Auswahl treffen kann?
Aber trotzdem nochmal vielen Dank!
Du hast mir echt sehr sehr viel weitergeholfen!!!
Liebe Grüße
Moni
AW: Sheetwechsel mit Scrolldown-Menü
07.12.2005 13:00:50
Matthias
Hi Moni,
also die erste ComboBox soll sich aus Blattname und B3 zusammensetzen, die zweite (wenn nötig) aus B5?
Gruß Matthias
Anzeige
AW: Sheetwechsel mit Scrolldown-Menü
07.12.2005 13:14:07
Moni
Ja, so in etwa.
Wenn man eine Bezeichnung auswählt die doppelt vorkommt, das man dann in einem zweiten Fenster nach den F-Nummern (B5) unterscheiden kann.
AW: Sheetwechsel mit Scrolldown-Menü
07.12.2005 13:15:51
Matthias
Hallo Moni,
mal schauen, ob ich da dazu komme.
Auf jeden Fall etwas Geduld..
Gruß Matthias
AW: Sheetwechsel mit Scrolldown-Menü
07.12.2005 13:23:14
Moni
Kein Problem!
Ich schaue dann später nochmal hier herein.
Vielen Dank im voraus!
Moni
AW: Sheetwechsel mit Scrolldown-Menü
07.12.2005 13:24:27
Matthias
Hallo Moni,
mal schauen, ob ich es hinkriege...
Ist gar nicht so einfach.
Gruß Matthias
AW: Sheetwechsel mit Scrolldown-Menü
07.12.2005 13:34:59
Moni
Ich habe vollstes Vertrauen in Dich! :-)
AW: Sheetwechsel mit Scrolldown-Menü
07.12.2005 13:53:29
Matthias
Hallo Moni,
ok mal sehen:
In "DieseArbeitsmappe":

Private Sub Workbook_Open()
Dim sh As Worksheet
Dim cB As ComboBox
Dim i As Integer
Set cB = Sheets(1).ComboBox1
cB.Clear
For i = 2 To Sheets.Count
ZuListe cB, Sheets(i).Range("B3")
Next i
End Sub

Ins Tabellenblattmodul: 2 Comboboxen (ComboBox1, ComboBox2)
und dieser Code:

Private Sub ComboBox1_Change()
Dim i As Integer
If HatPunkte(ComboBox1.Value) Then
With ComboBox2
.Visible = True
.Clear
For i = 2 To Sheets.Count
If Sheets(i).Range("B3").Value = OhnePunkte(ComboBox1.Value) Then
.AddItem Sheets(i).Range("B5")
End If
Next i
End With
Else
ComboBox2.Visible = False
For i = 2 To Sheets.Count
If Sheets(i).Range("B3") = ComboBox1.Value Then
Sheets(i).Activate
Exit Sub
End If
Next i
End If
End Sub
Private Sub ComboBox2_Change()
Dim i As Integer
For i = 2 To Sheets.Count
If Sheets(i).Range("B3").Value = OhnePunkte(ComboBox1.Value) And _
Sheets(i).Range("B5").Value = ComboBox2.Value Then
Sheets(i).Activate
Exit Sub
End If
Next i
End Sub

In eine Standardmaodul (z.B. Modul1):

Public Const ZMehr = " ->" 'Zeichen für mehrfache Treffer
Sub ZuListe(cB As ComboBox, wert As String)
Dim SchonDa As Integer
Dim ListenWert As String
Dim i As Integer, lc As Integer
lc = cB.ListCount - 1
SchonDa = -1
For i = 0 To lc
ListenWert = OhnePunkte(cB.List(i))
If ListenWert = wert Then
SchonDa = i
Exit For
End If
Next i
If SchonDa >= 0 Then
Debug.Print cB.List(SchonDa),
cB.List(SchonDa) = OhnePunkte(cB.List(SchonDa)) & ZMehr
Debug.Print cB.List(SchonDa)
Else
cB.AddItem wert
End If
End Sub
Function OhnePunkte(ByVal wert As String) As String
On Error GoTo errhandler
If Right(wert, Len(ZMehr)) = ZMehr Then
OhnePunkte = Left(wert, Len(wert) - Len(ZMehr))
Exit Function
End If
errhandler:
OhnePunkte = wert
End Function
Function HatPunkte(wert As String)
HatPunkte = Right(wert, Len(ZMehr)) = ZMehr
End Function
Sub AddPunkte(ByRef wert)
If Not HatPunkte(wert) Then wert = wert & ZMehr
End Sub

Viel Erfolg,
Matthias
Anzeige
AW: Sheetwechsel mit Scrolldown-Menü
07.12.2005 14:17:25
Moni
WOW, das ist ja Wahnsinn!!
Hat sofort funktioniert! Ich weiß garnicht was ich sagen soll... :-)
VIELEN DANK!!!!
Jetzt muss ich nur noch sehen, das ich die ganzen Codes auch halbwegs erklären kann.
Hast du vielleicht einen Tip für mich wo man sowas halbwegs verständlich nachlesen kann?
Vielen Dank nochmal!!!
Moni
AW: Sheetwechsel mit Scrolldown-Menü
07.12.2005 14:25:52
Matthias
Hallo Moni,
Jetzt muss ich nur noch sehen, das ich die ganzen Codes auch halbwegs erklären kann.
Du musst den Code als selbstgestrickt verkaufen? Au weia...
Gruß Matthias
AW: Sheetwechsel mit Scrolldown-Menü
07.12.2005 14:55:26
Moni
nee, das nicht unbedingt. Ich muss es nur grob erklären können!
Anzeige
AW: Sheetwechsel mit Scrolldown-Menü
07.12.2005 15:16:38
Moni
Super, vielen Dank!
Das erspart mir ja schon einiges an Arbeit!
Werde versuchen das ganze noch ein bischen genauer erklären zu können, aber das ist ja schon echt super!
Vielen Dank nochmal!
lg
Moni

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige