0

「 Tickets 」というクラスで管理されるコンテキスト メニュー オプションを使用して、メニュー イベントを管理する同じクラスで定義された「 TEmail 」というメソッドを呼び出したいと考えています。

インスタンス、クラス、名前などを使用して、さまざまなタイプの .OnAction プロパティを定義しようとしましたが、成功しませんでした。「TEmail」コードを実行できません。

Public WithEvents AppEvent As Outlook.Application

Private Sub AppEvent_ItemContextMenuDisplay(ByVal CommandBar As Office.CommandBar, ByVal Selection As Selection)

    Dim objButton As Office.CommandBarButton

    On Error GoTo ErrRoutine

    Set objButton = CommandBar.Controls.Add(msoControlButton)

    With objButton
        .BeginGroup = True
        .Caption = "Test-TEmail"
        .FaceID = 1000
        .Tag = "T-Email"
        .OnAction = "TEmail"
    End With

EndRoutine:
    Exit Sub

ErrRoutine:
    MsgBox Err.Number & " - " & Err.Description, vbOKOnly Or vbCritical, "Application_ItemContextMenuDisplay"
    GoTo EndRoutine
End Sub

Public Sub TEmail()
  ... my code ...
End Sub
4

1 に答える 1

0

解決策は、イベント ハンドラーを作成することです。

Public WithEvents AppEvent As Outlook.Application 
Public WithEvents myControl As CommandBarButton

Private Sub AppEvent_ItemContextMenuDisplay(ByVal CommandBar As Office.CommandBar, _
  ByVal Selection As Selection) 

    Dim objButton As Office.CommandBarButton 
    Dim oExp As Outlook.Explorer

    Set oExp = Outlook.ActiveExplorer

    On Error GoTo ErrRoutine 

    Set myControl = CommandBar.FindControl(, , "OpenForm")

    If myControl Is Nothing Then
        Set myControl = CommandBar.Controls.Add(msoControlButton) 
        With myControl
         .Caption = "TEmail"
         .FaceID = 59
         .Style = msoButtonIconAndCaption
         .Tag = "TEmail"
         .Visible = True
        End With
    End If
    ' ... 
End Sub 

Private Sub myControl_Click(ByVal Ctrl As Office.CommandBarButton, _
  CancelDefault As Boolean)
    TEmail
End Sub

Public Sub TEmail() 
    ' ... 
End Sub 
于 2014-09-23T20:17:46.153 に答える