Excel VBA質問箱 IV

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

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


5341 / 13644 ツリー ←次へ | 前へ→

【51407】マウスの右クリック tomi 07/9/15(土) 18:01 質問[未読]
【51408】Re:マウスの右クリック ikeri 07/9/15(土) 19:27 回答[未読]
【51409】Re:マウスの右クリック じゅんじゅん 07/9/15(土) 21:07 発言[未読]
【51410】Re:マウスの右クリック ichinose 07/9/15(土) 21:12 発言[未読]
【51416】Re:マウスの右クリック tomi 07/9/16(日) 3:30 お礼[未読]
【51417】Re:マウスの右クリック とおりすがり 07/9/16(日) 9:25 発言[未読]

【51407】マウスの右クリック
質問  tomi  - 07/9/15(土) 18:01 -

引用なし
パスワード
   マウスを右クリックするとポップアップメニューが表示されますが、
その中のどの項目を選択したかを取得する方法がありますでしょうか。

【51408】Re:マウスの右クリック
回答  ikeri  - 07/9/15(土) 19:27 -

引用なし
パスワード
   >マウスを右クリックするとポップアップメニューが表示されますが、
>その中のどの項目を選択したかを取得する方法がありますでしょうか。

用意された方法という事では無いでしょう。
その右クリックメニューをラップする事で取得は出来るでしょうが大変な作業となります。

右クリックいっても色々あります。
タイトルの右クリック、メニューの右クリック、セルの右クリック、シート見出しの右クリック等...

それに、どのタイミングで 選択した項目 を取得するつもりですか。
取得して何をするつもりですか。

失礼ながら説明不足だと思います。

【51409】Re:マウスの右クリック
発言  じゅんじゅん  - 07/9/15(土) 21:07 -

引用なし
パスワード
   ▼tomi さん:
>マウスを右クリックするとポップアップメニューが表示されますが、
>その中のどの項目を選択したかを取得する方法がありますでしょうか。

Excelは2007ですか?

【51410】Re:マウスの右クリック
発言  ichinose  - 07/9/15(土) 21:12 -

引用なし
パスワード
   こんばんは。

>マウスを右クリックするとポップアップメニューが表示されますが、
>その中のどの項目を選択したかを取得する方法がありますでしょうか。

クラスモジュールを使って、Commandbarbuttonのクリックイベントを取得すると
出来るかもしれませんよ!!

一例です。

新規ブックにおいて、クラスモジュールを作成します。
クラス名  Class1

このClass1のクラスモジュールに以下のコード。

'=====================================================
Option Explicit
Public WithEvents cmdb As CommandBarButton
'=================================================================
Private Sub cmdb_Click(ByVal Ctrl As Office.CommandBarButton, CancelDefault As Boolean)
  MsgBox Ctrl.Caption & " がクリックされました"
End Sub


標準モジュールに
'================================================================
Option Explicit
Dim cmbcls() As Class1
'================================================================
Sub main()
  'On Error Resume Next
  Dim cmb As CommandBarButton
  Dim idx As Long
  For Each cmb In CommandBars("Cell").Controls
    ReDim Preserve cmbcls(1 To idx + 1)
    Set cmbcls(idx + 1) = New Class1
    With cmbcls(idx + 1)
     Set .cmdb = cmb
     End With
    idx = idx + 1
    Next
End Sub


として、mainを実行した後に右クリックで適当なボタンをクリックしてください。

該当するボタンのCaptionが表示されます。

試してみてください。

尚、コードはExcel2002で確認しました。

【51416】Re:マウスの右クリック
お礼  tomi  - 07/9/16(日) 3:30 -

引用なし
パスワード
   ▼ichinose さん:
>こんばんは。
>
>>マウスを右クリックするとポップアップメニューが表示されますが、
>>その中のどの項目を選択したかを取得する方法がありますでしょうか。
>
>クラスモジュールを使って、Commandbarbuttonのクリックイベントを取得すると
>出来るかもしれませんよ!!
>
>一例です。
>
>新規ブックにおいて、クラスモジュールを作成します。
>クラス名  Class1
>
>このClass1のクラスモジュールに以下のコード。
>
>'=====================================================
>Option Explicit
>Public WithEvents cmdb As CommandBarButton
>'=================================================================
>Private Sub cmdb_Click(ByVal Ctrl As Office.CommandBarButton, CancelDefault As Boolean)
>  MsgBox Ctrl.Caption & " がクリックされました"
>End Sub
>
>
>標準モジュールに
>'================================================================
>Option Explicit
>Dim cmbcls() As Class1
>'================================================================
>Sub main()
>  'On Error Resume Next
>  Dim cmb As CommandBarButton
>  Dim idx As Long
>  For Each cmb In CommandBars("Cell").Controls
>    ReDim Preserve cmbcls(1 To idx + 1)
>    Set cmbcls(idx + 1) = New Class1
>    With cmbcls(idx + 1)
>     Set .cmdb = cmb
>     End With
>    idx = idx + 1
>    Next
>End Sub
>
>
>として、mainを実行した後に右クリックで適当なボタンをクリックしてください。
>
>該当するボタンのCaptionが表示されます。
>
>試してみてください。
>
>尚、コードはExcel2002で確認しました。
実行しました。解決できました。お手数をお掛けしてすみませんでした。

【51417】Re:マウスの右クリック
発言  とおりすがり  - 07/9/16(日) 9:25 -

引用なし
パスワード
   回答者への参考。

http://www2.moug.net/bbs/exvba/20070915000005.htm

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