 |
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
|
|
|