Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
444to448
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
444to448
444to448
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Eigenes Menü funktioniert nicht, wer kann helfen?

Eigenes Menü funktioniert nicht, wer kann helfen?
23.06.2004 21:47:53
Andy
Hallo,
habe ein eigenes Menü erstellt, welches leider nur teilweise
funktioniert. Das Ausblenden des Originalen geht und dsa wider-
herstellen mit Reset auch. Was habe ich falschgemacht, wer kennt
sich aus und kann mir den Fehler nennen bzw. an meinerm Beispiel
zeigen? Bin für jeden Rat sehr dankbar!
'===============================================================


      
Sub MenuOn()
    
Dim i As Integer
    
Dim objCmdBarControl As Office.CommandBarControl
    
Dim objCmdBarButton As Office.CommandBarButton
    
    
'bestehendes Menü löschen
    Do While CommandBars(1).Controls.Count >= 1
        CommandBars(1).Controls.Item(1).Delete
    
Loop
    
'benutzerdefiniertes Menü mit Untermenü erstellen
    Set objCmdBarControl = Application.CommandBars(1).Controls.Add(Type:=msoControlPopup, before:=1, Temporary:=True)
    objCmdBarControl.Caption = "Dienst auswählen..."
    
    
'benutzerdefinierte einträge im untermenü erstellen
    Set objCmdBarControl = Application.CommandBars(1).Controls.Add(Type:=msoControlButton)
    objCmdBarControl.Caption = "Spätschicht"
    objCmdBarControl.OnAction = "Spätschicht"
    
Set objCmdBarControl = Application.CommandBars(1).Controls.Add(Type:=msoControlButton)
    
With objCmdBarButton
    objCmdBarControl.Caption = "Nachtschicht"
    objCmdBarControl.OnAction = "Nachtschicht"
    
End With
    
    
Set objCmdBarControl = Application.CommandBars(1).Controls.Add(Type:=msoControlButton)
    
With objCmdBarButton
    objCmdBarControl.BeginGroup = 
True
    objCmdBarControl.Caption = "Tagschicht"
    objCmdBarControl.OnAction = "Tagschicht"
    
End With
    
    
Set objCmdBarControl = Application.CommandBars(1).Controls.Add(Type:=msoControlButton)
    
With objCmdBarButton
    objCmdBarControl.Caption = "Zwischenschicht"
    objCmdBarControl.OnAction = "Zwischenschicht"
    
End With
    
'==============================================================
' 2. MenüPopup mit Untermenu anlegen:
'==============================================================
    'benutzerdefiniertes Menü 2 mit Untermenü erstellen
    Set objCmdBarControl = Application.CommandBars(1).Controls.Add(Type:=msoControlPopup, before:=2, Temporary:=True)
    objCmdBarControl.Caption = "Freizeiten..."
    
    
Set objCmdBarControl = Application.CommandBars(1).Controls.Add(Type:=msoControlButton)
    
With objCmdBarButton
    objCmdBarControl.Caption = "Schlaffrei"
    objCmdBarControl.OnAction = "Schlaffrei"
    
End With
    
    
Set objCmdBarControl = Application.CommandBars(1).Controls.Add(Type:=msoControlButton)
    
With objCmdBarButton
    objCmdBarControl.Caption = "Frei"
    objCmdBarControl.OnAction = "Frei"
    
End With
    
    
Set objCmdBarControl = Application.CommandBars(1).Controls.Add(Type:=msoControlButton)
    
With objCmdBarButton
    objCmdBarControl.Caption = "Urlaub"
    objCmdBarControl.OnAction = "Urlaub"
    
End With
    
    
Set objCmdBarControl = Application.CommandBars(1).Controls.Add(Type:=msoControlButton)
    
With objCmdBarButton
    objCmdBarControl.BeginGroup = 
True
    objCmdBarControl.Caption = "Krank"
    objCmdBarControl.OnAction = "Krank"
    
End With
'==============================================================
' 2. Menübutton anlegen:
'==============================================================
    Set objCmdBarControl = Application.CommandBars(1).Controls.Add(Type:=msoControlButton)
    
With objCmdBarButton
    objCmdBarControl.Caption = "Info Gesamt"
    objCmdBarControl.OnAction = "Info_Gesamt"
    
End With
'==============================================================
' 3. Menübutton anlegen:
'==============================================================
    Set objCmdBarControl = Application.CommandBars(1).Controls.Add(Type:=msoControlButton)
    
With objCmdBarButton
        .BeginGroup = 
True
        .Caption = "Beenden"
        .OnAction = "Programm_Beenden"
    
End With
End Sub
'==============================================================
Sub MenuReset()
    Application.CommandBars(1).Reset
End Sub
'============================================================== 


'===============================================================
Gruß Andy
AW: Eigenes Menü funktioniert nicht, wer kann helfen?
Ulf
Wo genau klemmst denn?
Ulf
Eigenes erstelltes Menü funktioniert nicht richtig
23.06.2004 22:02:25
Andy
Hallo Ulf,
die Zuordnug klappt irgend wie nicht, und was da ist als Button,
ist nur als graues Feld da. Kannst es ja mal ausprobieren.
Irgend wie klappt die zuordnung zum Obermenü z. B. Dienst auswählen...
nicht.
Gruß
Andy
AW: Eigenes erstelltes Menü funktioniert nicht richtig
Ulf
es ist nicht auszumachen, welcher Buttun in welches Popup soll.
Unstimmigkeiten im Coe:
Set objCmdBarControl = Application.CommandBars(1).Controls.Add(Type:=msoControlButton)
With objCmdBarButton
objCmdBarControl.Caption = "Frei"
objCmdBarControl.OnAction = "Frei"
End With
Du settest ein objCmdBarControl und schreibst dann aber with objCmdButton
Den Button musst du noch einen Style zuordnen.
Ulf
Anzeige
AW: Eigenes Menü funktioniert nicht, wer kann helfen?
K.Rola
Hallo,
geht ein wenig durcheinander in deinem Code. Wenn das nur zu deinem Eigengebrauch ist,
ok, aber wenn du das weitergeben willst, wirst du u.U. Ärger mit den usern bekommen.
Du kannst nicht so einfach voraussetzen, dass die Commandbar(1), das ist die
Menüleiste unverändert ist. Du setzt sie aber einfach auf ihren Urzustand zurück.
Erstell doch besser gleich eine eigene Menübar und blende das Original aus.
Gruß K.Rola
AW: Eigenes Menü funktioniert nicht, wer kann helfen?
23.06.2004 22:43:06
Andy
Hallo K.Rola,
ich habe die Originale ausgeblendet bzw. gelöscht, dass ist richtig
und hat aus den gepanten PC's bisher soweit funktioniert. Was kann da
passieren, das verstehe ich nicht? Viel schlimmer ist doch, dass das
Menü sich überall hinschreibt und nur nicht dahin, wo ich es haben
will. Was mache ich da falsch? Kann mir da jemand helfen?
Gruß
Andy
Anzeige
AW: Eigenes Menü funktioniert nicht, wer kann helfen?
K.Rola
Hallo,
aus deinem Code ist nicht zu erkennen, welcher Button in welches popup soll.
Wenn du das mal klären kannst, kann ich dir auch sicher helfen.
was kann passieren? Stell dir vor, user hat sich eigene controls in die Menüleiste
gebastelt und du setzt die aber auf Standard zurück. Ich wäre da auf den
Programmierer stinksauer.
Gruß K.Rola
AW: Eigenes Menü funktioniert nicht, wer kann helfen?
23.06.2004 23:26:03
Andy
Hallo K.Rola,
danke für deine schnelle Antwort, bin dir für jede Hilfe dankbar.
Wenn du der Meinung bist, dass das mit dem Standart zurücksetzen
nicht gut ist würde ich genr einen anderen Vorschlag annehmen, aber
mit dem:
Menü erstellen
With Application
.ScreenUpdating = False
.CommandBars("toolbar list").Enabled = False
.CommandBars("Worksheet Menu Bar").Enabled = False
' .CommandBars("Cell").Enabled = False
.DisplayFormulaBar = True
.DisplayStatusBar = True
.DisplayFullScreen = True
End With
With ActiveWindow
.DisplayHorizontalScrollBar = False
.DisplayVerticalScrollBar = False
.DisplayWorkbookTabs = False
.DisplayHeadings = False
.WindowState = xlMaximized
End With
ist auch nicht das Gelbe dachte ich.
Das Menü steht eigentlich genau so, wie es in die Leiste kommen soll.
Zuerst kommen die Dienste im Obermenü mit Dienst auswählen...
Daneben Obermenü Freizeiten... mit den entsprechenden Frei als
Button drunter und daneben dann noch Info Gesamt mit Makro und
als letztes in der Leiste Beenden mit der Makrofunktion "Programm_Beenden".
Hoffentlich reicht das als Erklärung.
Gruß
Andy
Anzeige
AW: Eigenes Menü funktioniert nicht, wer kann helfen?
K.Rola
Hallo,
ich habs mal versucht, vielleicht passt es ja so. Ich hab jetzt mal eine
neue Menüleiste erstellt und das Original nur ausgeblendet.
Die anderen Sachen:
With Application
.ScreenUpdating = False
.CommandBars("toolbar list").Enabled = False
.CommandBars("Worksheet Menu Bar").Enabled = False 'das ist schon im Code
' .CommandBars("Cell").Enabled = False
.DisplayFormulaBar = True
.DisplayStatusBar = True
.DisplayFullScreen = True
End With
With ActiveWindow
.DisplayHorizontalScrollBar = False
.DisplayVerticalScrollBar = False
.DisplayWorkbookTabs = False
.DisplayHeadings = False
.WindowState = xlMaximized
End With
haben damit erstmal nichts zu tun, was du da nicht brauchst und ausblenden willst
musst du schon wissen.
Option Explicit
Const NMENU As String = "MenuNeu"

Sub MenuOn()
Dim i As Integer, cb As CommandBar
Dim pop1 As CommandBarPopup
Dim cbb As CommandBarButton
On Error Resume Next
CommandBars(NMENU).Delete
On Error GoTo 0
CommandBars(1).Enabled = False
Set cb = CommandBars.Add(Name:=NMENU, Position:=msoBarTop, MenuBar:=True)
'benutzerdefiniertes Menü mit Untermenü erstellen
Set pop1 = cb.Controls.Add(10)
pop1.Caption = "Dienst auswählen..."
'benutzerdefinierte einträge im untermenü erstellen
Set cbb = pop1.Controls.Add(1)
With cbb
.Style = 2
.Caption = "Spätschicht"
.OnAction = "Spätschicht"
.BeginGroup = True
End With
Set cbb = pop1.Controls.Add(1)
With cbb
.Style = 2
.Caption = "Nachtschicht"
.OnAction = "Nachtschicht"
.BeginGroup = True
End With
Set cbb = pop1.Controls.Add(1)
With cbb
.Style = 2
.Caption = "Tagschicht"
.OnAction = "Tagschicht"
.BeginGroup = True
End With
Set cbb = pop1.Controls.Add(1)
With cbb
.Style = 2
.Caption = "Zwischenschicht"
.OnAction = "Zwischenschicht"
.BeginGroup = True
End With
' 2. MenüPopup mit Untermenu anlegen:
'benutzerdefiniertes Menü 2 mit Untermenü erstellen
Set pop1 = cb.Controls.Add(10)
pop1.Caption = "Freizeiten..."
Set cbb = pop1.Controls.Add(1)
With cbb
.Style = 2
.Caption = "Schlaffrei"
.OnAction = "Schlaffrei"
.BeginGroup = True
End With
Set cbb = pop1.Controls.Add(1)
With cbb
.Style = 2
.Caption = "Frei"
.OnAction = "Frei"
.BeginGroup = True
End With
Set cbb = pop1.Controls.Add(1)
With cbb
.Style = 2
.Caption = "Urlaub"
.OnAction = "Urlaub"
.BeginGroup = True
End With
Set cbb = pop1.Controls.Add(1)
With cbb
.Style = 2
.Caption = "Krank"
.OnAction = "Krank"
.BeginGroup = True
End With
' 2. Menübutton anlegen:
Set cbb = cb.Controls.Add(1)
With cbb
.Style = 2
.Caption = "Info Gesamt"
.OnAction = "Info_Gesamt"
.BeginGroup = True
End With
' 3. Menübutton anlegen:
Set cbb = cb.Controls.Add(1)
With cbb
.Style = 2
.Caption = "Beenden"
.OnAction = "Programm_Beenden"
.BeginGroup = True
End With
cb.Enabled = True
cb.Visible = True
End Sub

'==============================================================

Sub MenuReset()
CommandBars(NMENU).Delete
CommandBars(1).Enabled = True
End Sub

Gruß K.Rola
Anzeige
Eigenes Menü funktioniert Rücksetzen jetzt nicht
23.06.2004 23:52:06
Andy
Hallo K.Rola,
Die Leiste sieht gut aus, Danke. Nur das:


      
Sub MenuReset()
CommandBars(NMENU).Delete
CommandBars(1).Enabled = 
True
End Sub 


funktioniert nicht, er bleibt gleich beim Delete hängen.
Was kann ich noch tun? Das Andere hatte gut funktioniert.
Gruß
Andy
Anzeige
AW: Eigenes Menü funktioniert Rücksetzen jetzt nicht
K.Rola
Hallo,
steht das hier:
Const NMENU As String = "MenuNeu"
wirklich oben vor der ersten Sub?
Wenn du das öfter als einmal ausführst, dann so:

Sub MenuReset()
On Error resume Next
CommandBars(NMENU).Delete
on Error goto 0
CommandBars(1).Enabled = True
End 

Sub
Gruß K.Rola

Danke noch mal Rücksetzen funktioniert jetzt
24.06.2004 13:11:11
Andy
Hallo K.Rola,
danke noch mal für deine Hilfe, hatte mich vertan bzw.
die besagte zeile einfach übersehen. Jetzt funktioniert
mein Menü auch so, wie ich das will.
Gruß Andy

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige