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

VBE Umgebung

VBE Umgebung
20.06.2004 00:48:24
Olaf
guten abend zusammen,
ich möchte im vbe editor eigene makros über ein menü oder eine schaltfläche in einer symbolleiste aufrufen.
mein testcode funktioniert soweit, dass das menü angelegt wird.
onaction wird auch auf das richtige makro gesetzt (habe ich im debugger nachgesehen).
das problem ist nur, wenn ich auf den menüpunkt klicke, wird das makro trotzdem nicht aufgerufen.
hier mein versuch :
Const MenueName = "&Mein Menü"
Const Befehl1 = "&1. Machwas"
Const Befehl2 = "&2. Machwas"

Sub Menü_Erstellen()
Dim MB As Object, MeinMenü As Object, Befehl As Object
Call Menü_Löschen
Set MB = Application.ThisWorkbook.VBProject.VBE.CommandBars("Test")
Set MeinMenü = MB.Controls.Add(Type:=msoControlPopup, Temporary:=True)
MeinMenü.Caption = MenueName
Set Befehl = MeinMenü.Controls.Add(Type:=msoControlButton, ID:=1)
With Befehl
.Caption = Befehl1
.OnAction = "Machwas1"
End With
Set Befehl = MeinMenü.Controls.Add(Type:=msoControlButton, ID:=1)
With Befehl
.Caption = Befehl2
.OnAction = "Machwas2"
End With
End Sub


Sub Menü_Löschen()
On Error Resume Next
Application.ThisWorkbook.VBProject.VBE.CommandBars("Test").Controls(MenueName).Delete
End Sub


Sub Machwas1()
MsgBox "1. Routine", vbExclamation
End Sub


Sub Machwas2()
MsgBox "2. Routine", vbExclamation
End Sub

vielleicht hat jemand von euch einen tipp ?
ach ja, falls jemand weiß, wie ich das auch über eine schaltfläche in der symbolleiste lösen könnte, wär das der hit :-)
gruß, olaf

13
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: VBE Umgebung
20.06.2004 07:35:39
DieterB
Hallo Olaf,
warum Dein Makro nicht funktioniert, kann ich leider nicht nachvollziehen.
Aber, wie Du das Makro aus der Menüleiste aufrufst, dazu empfehle ich Dir folgenden
Link
Gruß
DieterB
AW: VBE Umgebung
20.06.2004 10:55:45
olaf
hallo dieterb,
vielen dank für den hinweis, aber das war nicht mein problem :-)
das problem ist, dass mein makro zwar bei der onaction eigenschaft des menüs eingetragen wurde, onaction aber bei einem mausklick nicht ausgewertet wird (in der vbe umgebung).
gruß, olaf
AW: schlechte Karten
20.06.2004 10:52:36
olaf
hallo nancy,
vielen dank für deinen tipp. das scheint´s gewesen zu sein.
das bsp. aus der knowledge base funktioniert.
aber wenn ich das richtig verstanden habe, muss ich jetzt für jede schaltfläche ein eigenes klassenmodul anlegen ?
gruß, olaf
weiss auch nicht recht ...
NE
Hallo Olaf,
öhem ..., da bin ich mir jetzt auch nicht so sicher.
Da ja da ne New Collection drinne ist, eigentlich für Buttons
innerhalb EINER Symbolleiste nicht, oder?
Ich weiss es ehrlich gesagt nicht, da ich bislang dieses nur einmal und
mit nur einem Button brauchte und mit cls' nicht wirklich fit bin ;-(
Gruss Nancy
Anzeige
AW: schlechte Karten
20.06.2004 11:33:36
Nepumuk
Hallo Olaf,
nein, musst du nicht. Ändere den Code für das Modul so:


Option Explicit
Dim oBtns As New Collection
Function A()
   Dim cb As CommandBar
   Dim oEvt(1 To 2) As CBTnEvent
   Set oBtns = Nothing
   Set cb = Application.VBE.CommandBars.Add("TestBar")
   cb.Visible = True
   cb.Position = msoBarTop
   Set oEvt(1) = New CBTnEvent
   Set oEvt(1).oBtn = cb.Controls.Add(msoControlButton)
   With oEvt(1).oBtn
      .Style = msoButtonIconAndWrapCaption
      .Caption = "Test1"
   End With
   oBtns.Add oEvt(1)
   Set oEvt(2) = New CBTnEvent
   Set oEvt(2).oBtn = cb.Controls.Add(msoControlButton)
   With oEvt(2).oBtn
      .Style = msoButtonIconAndWrapCaption
      .Caption = "Test2"
   End With
   oBtns.Add oEvt(2)
End Function


und für das Klassenmodul so:


Option Explicit
Public WithEvents oBtn As CommandBarButton
Private Sub oBtn_click(ByVal ctrl As Office.CommandBarButton, CancelDefault As Boolean)
    Select Case oBtn.Caption
        Case "Test1": MsgBox "Test1"
        Case "Test2": MsgBox "Test2"
    End Select
End Sub


Gruß
Nepumuk
Anzeige
AW: schlechte Karten
NE
Hi Nepumuk,
einfach schön gelöst ... :-)
Gruss Nancy
AW: schlechte Karten
Gerd
Dieser Code soll in Office 97 laufen? Glaub ich nicht!
Gerd
mit Garantie
20.06.2004 15:50:02
Nepumuk
AW: mit Garantie
Gerd
msoButtonIconAndWrapCaption gibt es in Office 97 noch nicht!
Gerd
AW: schlechte Karten
Gerd
msoButtonIconAndWrapCaption gibt es in Office 97 noch nicht!
Gerd
AW: schlechte Karten
20.06.2004 16:09:23
Nepumuk
Hallo Gerd,
das kann sein, aber da Olaf den ursprünglichen Code zum laufen brachte, habe ich darin kein Problem gesehen. Wenn er Option Explicit nicht verwendet, dann liefert die Variable 0 zurück. Da ensteht zumindes kein Fehler.
Gruß
Nepumuk
AW: schlechte Karten
20.06.2004 21:06:29
olaf
Hallo zusammen,
hier hat sich ja einiges getan im laufe des tages. noch einmal vielen dank.
bis jetzt läuft es schon unter office 2000, morgen kommt dann der test unter 97. mal schaun, ob es klappt.
gruß, olaf
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige