Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


4069 / 76734 ←次へ | 前へ→

【78293】Re:グラフを右クリック時のメニュー追加
発言  kamikaya  - 16/6/17(金) 14:36 -

引用なし
パスワード
   ▼North さん:

先ほども言ったように,グラフの既存の右クリックメニューへの追加はできませんが,以下のように独自の右クリックメニューを作成することはできます。

下記のコードをそれぞれのモジュールにコピーして,プロシージャ"実行するマクロ"を実行してみてください。

グラフ上で[Shift]キーを押しながら右クリックを押すことで独自右クリックメニュー(Test)がポップアップするようになっています。

※これでは各ブックで行わなくてはならないので,実装するならアドインファイルとした方が良いかと思います。

【Microsoft Excel Objects ThisWorkbook】

Private WithEvents xApp As Application

【標準モジュール】

Option Explicit

Public MyMenu
Private ChrtEvents As New Collection

'■はじめに起動する場所
Sub 実行するマクロ()

  '独自右クリックメニューの作成
  subSettingMyMenu

  '独自右クリックメニューのグラフへの割り当て
  Dim CH As ChartObject
  Dim WS As Worksheet
  
  'アクティブブック上のすべてのグラフに独自右クリックメニューを割り当てる
  For Each WS In ActiveWorkbook.Worksheets
    For Each CH In WS.ChartObjects
      Dim ChartEvent As New Class1 '"Class1"の箇所はクラスモジュールの名前と揃える
      Set ChartEvent.xChart = CH.Chart
      ChrtEvents.Add ChartEvent
    Next
  Next

End Sub

'■独自右クリックメニューの作成
Private Sub subSettingMyMenu()

  Set MyMenu = Application.CommandBars.Add(Position:=msoBarPopup, Temporary:=True)
  With MyMenu
    With .Controls.Add
      .Caption = "Test"     'そちらの"調整"に相当
      .OnAction = "subTest"   'そちらの"mAdj"に相当
    End With
  End With
  
End Sub

'■最終的に実行したいマクロ

Private Sub subTest()

  MsgBox "Hello world"

End Sub

【クラスモジュール(Class1)】

Option Explicit

Public WithEvents xChart As Chart
Dim Flag As Boolean

'■グラフ上でマウスボタンが押されたら…
Private Sub xChart_MouseDown(ByVal Button As Long, ByVal Shift As Long, ByVal X As Long, ByVal Y As Long)

  If Button = 2 Then
    If Shift = 1 Then
      MyMenu.ShowPopup
    End If
  End If
  Flag = True

End Sub

'■グラフが右クリックされたら…
Private Sub xWorksheet_BeforeRightClick(ByVal Target As Range, Cancel As Boolean)

  If Flag = True Then
    Cancel = True
    Flag = False
  End If

End Sub

4 hits

【78283】グラフを右クリック時のメニュー追加 North 16/6/17(金) 9:07 質問[未読]
【78285】Re:グラフを右クリック時のメニュー追加 kamikaya 16/6/17(金) 9:20 発言[未読]
【78293】Re:グラフを右クリック時のメニュー追加 kamikaya 16/6/17(金) 14:36 発言[未読]
【78294】Re:グラフを右クリック時のメニュー追加 North 16/6/17(金) 14:45 お礼[未読]
【78295】Re:グラフを右クリック時のメニュー追加 kamikaya 16/6/17(金) 15:18 質問[未読]
【78297】Re:グラフを右クリック時のメニュー追加 kamikaya 16/6/17(金) 21:05 発言[未読]

4069 / 76734 ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free