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

combobox in menüleiste

combobox in menüleiste
30.04.2006 13:10:05
manuela
hallo aus der schweiz
in meinen arbeitsmappen befinden sich bis zu 30 verschiedene blätter. damit ich sie nicht mühsam durch klicken suchen muss, möchte sie in einer combobox in der menüleiste sortiert anzeigen. auf der suche hier habe ich folgenden code gefunden:

Private Sub Workbook_open()
Dim oCbo As CommandBarComboBox
Dim wks As Worksheet
Dim iCounter As Integer
Call CmdDelete
With Application.CommandBars.Add("Worksheet Menu Bar")
Set oCbo = .Controls.Add( _
Type:=msoControlComboBox, before:=.Controls.Count)
End With
With oCbo
.Caption = "Monate"
.OnAction = "BlattAuswahl"
For iCounter = 0 To 11
.AddItem Format(DateSerial(1, iCounter + 1, 1), "mmmm")
Next iCounter
.ListIndex = 1
End With
End Sub

allerdings kriege ich beim öffen der arbeitsmappe immer einen laufzeitfehler 5 ungültiger prozeduraufruf oder argument bei der zeile with application.commandbar ...
warum? oder gibt es eine andere möglichkeit, bequem auf soviele blätter innerhalb einer mappe zuzugreifen.
herzlichen dank
manuela

3
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: combobox in menüleiste
30.04.2006 13:28:19
K.Rola
Hallo,
ganz so einfach ist das nicht, es muss ja schließlich berücksichtigt werden, dass
ggf. Blätter gelöscht oder hinzugefügt werden. Außerdem muss das immer aktualisiert
werden, wenn eine andere Mappe aktiviert wird.
Vielleicht reicht dir das ja:
Userbild
Gruß K.Rola
AW: combobox in menüleiste
30.04.2006 13:38:18
Josef
Hallo Manuela!
Wie K.Rola schon beschrieben hat, ist das nicht so einfach!
Vom Prinzip her könnte das so aussehen!
(Das Löschen bzw. Einfügen von Tabellenblättern wird nicht berücksichtigt!"
' **********************************************************************
' Modul: DieseArbeitsmappe Typ: Element der Mappe(Sheet, Workbook, ...)
' **********************************************************************

Option Explicit

Private Sub Workbook_Activate()
makeBar
End Sub


Private Sub Workbook_Deactivate()
delBar
End Sub


' **********************************************************************
' Modul: Modul1 Typ: Allgemeines Modul
' **********************************************************************

Option Explicit
Const myBar As String = "Worksheet Menu Bar"
Const myCntrl As String = "SheetList"

Sub makeBar()
Dim objCMB As CommandBar
Dim objCCB As CommandBarComboBox
Dim varList() As Variant
Dim objSh As Worksheet
Dim intC As Integer

delBar

Set objCMB = Application.CommandBars(myBar)
Set objCCB = objCMB.Controls.Add(msoControlComboBox)

Redim varList(ThisWorkbook.Worksheets.Count - 1)

For Each objSh In ThisWorkbook.Worksheets
  varList(intC) = objSh.Name
  intC = intC + 1
Next

QuickSort varList

With objCCB
  .Caption = myCntrl
  .Style = msoComboLabel
  For intC = 0 To UBound(varList)
    .AddItem varList(intC)
  Next
  .OnAction = "SelectSheet"
End With

End Sub


Sub delBar()
On Error Resume Next
Application.CommandBars(myBar).Controls(myCntrl).Delete
On Error GoTo 0
End Sub


Private Sub SelectSheet()
Dim strSheet As String
On Error Resume Next
strSheet = Application.CommandBars.ActionControl.Text

ThisWorkbook.Sheets(strSheet).Activate
End Sub


Private Sub QuickSort(data() As Variant, Optional UG, Optional OG)
Dim P1&, P2&, T1 As Variant, T2 As Variant

UG = IIf(IsMissing(UG), LBound(data), UG)
OG = IIf(IsMissing(OG), UBound(data), OG)

P1 = UG
P2 = OG
T1 = data((P1 + P2) / 2)

Do
  
  Do While (data(P1) < T1)
    P1 = P1 + 1
  Loop
  
  Do While (data(P2) > T1)
    P2 = P2 - 1
  Loop
  
  If P1 <= P2 Then
    T2 = data(P1)
    data(P1) = data(P2)
    data(P2) = T2
    P1 = P1 + 1
    P2 = P2 - 1
  End If
  
Loop Until (P1 > P2)

If UG < P2 Then QuickSort data, UG, P2
If P1 < OG Then QuickSort data, P1, OG

End Sub


'******************************
'* Gruß Sepp
'*
'* Rückmeldung wäre nett!
'******************************

Anzeige
AW: combobox in menüleiste
30.04.2006 14:57:52
manuela
ganz herzlichen dank euch beiden.
sepp: funktioniert top und ist genau, was ich gesucht habe. toll
k. rola: den rechtsklick habe ich nicht gekannt. einfach und praktisch. bei 30 sheets muss man sich allerdings durch zwei seiten klicken und darum werde ich die lösung von sepp übernehmen.
viele grüsse und ein schönes wochenende
manuela

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige