|
Kontextmenü in der
Entwicklungsumgebung erweitern | 04.02.2002 |
Auch in der Entwicklungsumgebung, also im VBA-Editor,
kann man u.a. das Kontextmenü erweitern.
Ein Anwendungsbeispiel könnte das Einfügen
immer wieder benötigter Routinen sein.
In diesem Beispiel wird dem Kontextmenü der Eintrag "Tabellen
durchlaufen"
hinzugefügt.
Wird dieser Menüpunkt aufgerufen wird an der aktuellen Cursorpostion
mittels SendKeys eine Schleife eingefügt, die alle Tabellen abarbeitet:
For Each Tabelle In ActiveWorkbook.Sheets
MsgBox Tabelle.Name
Next Tabelle
Wichtig:
Setzen Sie zunächst einen Verweis auf "Microsoft Visual Basic for Applications Extensibility"
(siehe "Extras" - "Verweise")
|
Schritt
1
Fügen Sie diesen Code unter "DieseArbeitsmappe" ein:
|
Private Sub Workbook_Open()
Menü_löschen
Menü_erstellen
End Sub
Private Sub Workbook_BeforeClose(Cancel As Boolean)
Menü_löschen
End Sub
|
Schritt 2
Fügen Sie diesen Code in einem neuen Modul ein (beispielsweise
"Modul1"):
|
Dim clsAddMenu As New clsMenue
Sub CodeEinfügen()
SendKeys "For Each Tabelle In ActiveWorkbook.Sheets" & vbNewLine
SendKeys vbTab & "MsgBox Tabelle.Name" & vbNewLine
SendKeys "{HOME}" & ("Next Tabelle")
End Sub
Sub Menü_erstellen()
clsAddMenu.AddMenuItem
End Sub
Sub Menü_löschen()
Set clsAddMenu = Nothing
On Error Resume Next
Application.VBE.CommandBars("Code Window"). _
Controls("For Each Tabelle...").Delete
End Sub
|
Schritt 3
Fügen Sie diesen Code in ein Klassenmodul ein.
Vergeben Sie diesem Klassenmodul den Namen "clsMenue"
|
Public WithEvents Menue As VBIDE.CommandBarEvents
Public Sub AddMenuItem()
Dim ctlTopMenu As CommandBarButton
Set ctlTopMenu = Application.VBE.CommandBars("Code Window"). _
Controls.Add(Type:=msoControlButton)
ctlTopMenu.BeginGroup = True
ctlTopMenu.Caption = "For Each Tabelle..."
ctlTopMenu.Enabled = True
Set Menue = Application.VBE.Events.CommandBarEvents(ctlTopMenu)
End Sub
Private Sub Menue_Click(ByVal cmdBar As Object, handled As Boolean, Cancel As Boolean)
Call CodeEinfügen
End Sub
|
|
|