Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
1504to1508
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

Was als .OnAction angeben?

Was als .OnAction angeben?
25.07.2016 14:06:28
Hendrik
Hallo zusammen,
ich habe ein Listbox auf einem Userform. Diese hat ein Kontextmenü und u.a. den Eintrag "hinzufügen".
Nun gibt es auch die Schaltfläche "cbHinzufuegen" und bereits die Private Sub _ cbHinzufuegen_Click(). Diese Prozedur soll auch durch den Kontexteintrag aufgerufen werden. Der Befehl

.OnAction = "cbHinzufuegen_Click"
scheint aber nicht zu funktionieren. Was kann ich als .OnAction angeben?
Dies hier wird bei der Initialisierung des UserForms ausgeführt:
Set cmdBarKontext = Application.CommandBars.Add(Name:="liboRegelnKontext", Position:= _
msoBarPopup, temporary:=True)
Set cmdBarKontextBtn = cmdBarKontext.Controls.Add(msoControlButton)
With cmdBarKontextBtn
.Caption = "Eintrag hinzufügen"
.OnAction = "cbHinzufuegen_Click"
.Style = msoButtonIconAndCaption
End With
Set cmdBarKontextBtn = Nothing
Set cmdBarKontext = Nothing
Und das gibts auch noch:
Private Sub liboRegeln_MouseUp(ByVal Button As Integer, ByVal Shift As Integer, ByVal x As  _
Single, ByVal Y As Single)
If Button = 2 Then
With CommandBars("liboRegelnKontext")
.ShowPopup
End With
End If
End Sub
Danke und Grüße
Hendrik

1
Beitrag zum Forumthread
Beitrag zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Was als .OnAction angeben?
25.07.2016 14:46:50
Mullit
Hallo,
das Event stetht als Private-Prozedur im Klassenmodul des Forms, das macht Probleme, Du kannst es aber aus einem Standardmodul ansteuern, bspw.:
' ************************************************************** 
' Modul: UserForm1 Typ: Klassenmodul des UserForms 
' ************************************************************** 

Option Explicit

Private Const GC_COMMANDBAR_NAME As String = "liboRegelnKontext"

Private Sub cbHinzufuegen_Click()
MsgBox "test"
End Sub

Private Sub liboRegeln_MouseUp(ByVal Button As Integer, _
  ByVal Shift As Integer, ByVal x As Single, ByVal Y As Single)
    If Button = 2 Then
        Call Application.CommandBars(GC_COMMANDBAR_NAME).ShowPopup
    End If
End Sub

Private Sub UserForm_Activate()
Call prcDeleteCommandBar
With Application.CommandBars.Add(Name:=GC_COMMANDBAR_NAME, Position:= _
    msoBarPopup, Temporary:=True)
    With .Controls.Add(Type:=msoControlButton, Temporary:=True)
        .Caption = "Eintrag hinzufügen"
        .OnAction = "MyMacro"
        .Style = msoButtonIconAndCaption
    End With
End With
End Sub

Private Sub UserForm_Terminate()
Call prcDeleteCommandBar
End Sub

Private Sub prcDeleteCommandBar()
  Dim cmbBar As CommandBar
  For Each cmbBar In Application.CommandBars
     With cmbBar
         If .Name = GC_COMMANDBAR_NAME Then Call .Delete
     End With
  Next
End Sub

' ************************************************************** 
' Modul: Modul1 Typ: Standardmodul 
' ************************************************************** 

Option Explicit

Public Sub MyMacro()
  UserForm1.cbHinzufuegen.Value = True
End Sub


VBA/HTML - CodeConverter für Office-Foren
AddIn für Excel/Word 2000-2010 - komplett in VBA geschrieben von Lukas Mosimann
Projektbetreuung durch mumpel



Code erstellt und getestet in Office 12

Gruß, Mullit
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige