Excel VBA質問箱 IV

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

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


4067 / 76734 ←次へ | 前へ→

【78295】Re:グラフを右クリック時のメニュー追加
質問  kamikaya  - 16/6/17(金) 15:18 -

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

ちょっと加筆修正しました。

下記のコードはアドインファイルに記述します。既存のブックが開かれるたびにグラフの割り当てを自動的に行います。

ただし,これの問題はすでに開いているブックで新たにグラフを作成した場合,そのグラフには手動でイベント割り当てを行う必要があります(そのためのマクロ"実行するマクロ")。

逆質問で申し訳ないのですが,シート上でグラフが新規作成された場合にイベントを発生させる方法を知っている方がいらっしゃいましたらご教授のほどお願いします。

【Microsoft Excel Objects ThisWorkbook】

Option Explicit

Private WithEvents xApp As Application

'■アドインファイル(これ)が起動したとき…
Private Sub Workbook_Open()

  ' アドイン起動時、Applicationオブジェクトのイベントをキャッチ
  Set xApp = Me.Application
  
End Sub

'■既存のブックが開いたとき…
Private Sub xApp_WorkbookOpen(ByVal WB As Workbook)

  'グラフの割り当て
  subChartEventSetting WB

End Sub

【標準モジュール】

Option Explicit

Public MyMenu
Private ChrtEvents As New Collection

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

  subChartEventSetting ActiveWorkbook

End Sub

'■グラフの割り当て
Public Sub subChartEventSetting(WB As Workbook)

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

  '独自右クリックメニューのグラフへの割り当て
  Dim CH As ChartObject
  Dim WS As Worksheet
  
  'アクティブブック上のすべてのグラフに独自右クリックメニューを割り当てる
  For Each WS In WB.Worksheets
    For Each CH In WS.ChartObjects
      Dim ChartEvent As New 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"
    End With
  End With
  
End Sub

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

Private Sub subTest()

  MsgBox "Hello world"

End Sub

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

Option Explicit

Public WithEvents xChart As Chart

'■グラフ上でマウスボタンが押されたら…
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

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 発言[未読]

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