Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1136to1140
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
Inhaltsverzeichnis

Konstante und Menubezeichnung ändern

Konstante und Menubezeichnung ändern
Peter
Guten Abend
Bei der Festlegung eines benutzerdefinierten Menus gebe ich diesem beispielsweise den Namen "Test".
Gibt es eine Möglichkeit, dass ich beispielsweise in einer Zelle einen Namen eintragen kann, der dann die Constante MenueName (="Test") ersetzt (beispielsweise mit "Spezialmenu") und gleichzeitig auch die Bezeichnung des benutzerdefinierten Menus entsprechend (mit "Spezialmenu")anpasst?
Danke für jeden Hinweis!
Peter
Const MenueName = "&Test"
Const Befehl1 = "&Import"
Sub Menue_Erstellen()
Dim MB As Object, MeinMenue As Object, Befehl As Object
Call Menue_Loeschen
Set MB = CommandBars.ActiveMenuBar
Set MeinMenue = MB.Controls.Add(Type:=msoControlPopup, Temporary:=True)
MeinMenue.Caption = MenueName
Set Befehl = MeinMenue.Controls.Add(Type:=msoControlButton, ID:=1)
With Befehl
.Caption = Befehl1
.OnAction = "Machwas1"
End With
End Sub

Sub Menue_Loeschen()
On Error Resume Next
CommandBars.ActiveMenuBar.Controls(MenueName).Delete
End Sub

Sub Machwas1()
' MsgBox "Daten werden importiert", vbExclamation
Call DatenEintragen
'Application.StatusBar = ""
End Sub

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

Betreff
Benutzer
Anzeige
AW: Konstante und Menubezeichnung ändern
20.02.2010 08:56:54
Nepumuk
Hallo,
natürlich kannst du die Caption des Menüs und des Buttons ändern. Aber ein Zellwert ist und kann keine Konstante sein. Konstante besagt ja schon, dass deren Wert zur Laufzeit nicht änderbar ist. Der Inhalt einer Zelle ist aber zu jeder Zeit änderbar.
' **********************************************************************
' Modul: Tabelle1 Typ: Element der Mappe(Sheet, Workbook, ...)
' **********************************************************************

Option Explicit

Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.Column = 1 And Target.Row < 3 Then Call Set_Caption
End Sub

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

Option Explicit

Const TAG_POPUP = "Peter"
Const CAPTION_POPUP = "&Test"
Const CAPTION_BUTTON = "&Import"

Public Sub Create_Menue()
    Dim objPopup As CommandBarPopup, objButton As CommandBarButton
    Dim intIndex As Integer
    Call Delete_Menue
    For intIndex = 1 To 2
        Set objPopup = CommandBars(intIndex).Controls.Add( _
            Type:=msoControlPopup, Temporary:=True)
        objPopup.Tag = TAG_POPUP
        Set objButton = objPopup.Controls.Add(Type:=msoControlButton)
        objButton.OnAction = "Machwas1"
    Next
    Call Set_Caption
    Set objPopup = Nothing
    Set objButton = Nothing
End Sub

Public Sub Delete_Menue()
    Dim objControls As CommandBarControls, objControl As CommandBarControl
    Set objControls = CommandBars.FindControls(Tag:=TAG_POPUP)
    If Not objControls Is Nothing Then
        For Each objControl In objControls
            objControl.Delete
        Next
        Set objControls = Nothing
        Set objControl = Nothing
    End If
End Sub

Public Sub Set_Caption()
    Dim objControls As CommandBarControls, objControl As CommandBarControl
    Dim strPopupCaption As String, strButtonCaption As String
    If Not IsEmpty(Tabelle1.Cells(1, 1).Value) Then
        strPopupCaption = Tabelle1.Cells(1, 1).Value
    Else
        strPopupCaption = CAPTION_POPUP
    End If
    If Not IsEmpty(Tabelle1.Cells(2, 1).Value) Then
        strButtonCaption = Tabelle1.Cells(2, 1).Value
    Else
        strButtonCaption = CAPTION_BUTTON
    End If
    Set objControls = CommandBars.FindControls(Tag:=TAG_POPUP)
    If Not objControls Is Nothing Then
        For Each objControl In objControls
            objControl.Caption = strPopupCaption
            objControl.Controls(1).Caption = strButtonCaption
        Next
        Set objControls = Nothing
        Set objControl = Nothing
    End If
End Sub

Public Sub Machwas1()
    ' MsgBox "Daten werden importiert", vbExclamation
    Call DatenEintragen
    'Application.StatusBar = ""
End Sub

Gruß
Nepumuk
Anzeige
Nochwas
20.02.2010 09:03:43
Nepumuk
Hi,
ActiveMenuBar würde ich auf keinen Fall benutzen. Excel hat zwei Menübars, die Worksheet-Menübar und die Chart-Menübar. Ist zufällig ein Diagrammblatt oder ein Diagramm in einer Tabelle aktiv, wird dein Popup auf der Chart-Menübar angelegt. Wird dann eine Zelle in einer Tabelle aktiv, verschwindet natürlich dein Popup. Darum lege ich es grundsätzlich auf beiden Menübars an (For intIndex = 1 to 2).
Gruß
Nepumuk
AW: Nochwas
20.02.2010 19:32:04
Peter
Hallo Nepumuk
Vielen Dank für beide Threads.
Ich werde das baldmöglichst ausprobieren resp. umsetzen.
Gruss, Peter

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige