アプリ版:「スタンプのみでお礼する」機能のリリースについて

シート上で右クリックをしたときに本来のショートカットメニューを表示せず、ユーザー定義のメニューを表示させ、表示させる名前の一覧をエクセルのシートから50行ほど参照し、右クリック時のメニューに表示させるようにしました。
そこまではよかったのですが、通常であればバーに対してひとつずつマクロをすると思います。しかし今回やりたいことは、右クリックをした後に表示されるメニューで押したところの名前を、最初に右クリックした場所に文字列として入力するだけなので、なにかうまい方法があればと思い、質問いたしました。
よろしくお願いします

A 回答 (2件)

意味が違うかも知れませんが、、、



Sheet2の A1から下にポップアップするリストがあるとして
Sheet1のシートモジュールと標準モジュールに下記を転記して実行するとそれっぽくなりますが、、、

'****** シートモジュール ***************************************************************
Private Sub Worksheet_BeforeRightClick(ByVal Target As Excel.Range, Cancel As Boolean)
Dim myPopup As Variant, i As Long
 Cancel = True
 Set myPopup = CommandBars.Add(Position:=msoBarPopup, Temporary:=True)
 For i = 1 To Worksheets("Sheet2").Range("A65536").End(xlUp).Row
   With myPopup.Controls.Add
      .Caption = Worksheets("Sheet2").Range("A" & i).Value
      .OnAction = "PopupAdd"
      .FaceId = 31
   End With
 Next i
  myPopup.ShowPopup
End Sub
'****** シートモジュール ***************************************************************


'****** 標準モジュール *****************************************************************
Sub Popupadd()
Dim i As Long
 If IsArray(Application.Caller) Then
   i = Application.Caller(1)
   ActiveCell.Value = Worksheets("Sheet2").Range("A" & i).Value
 End If
End Sub
'****** 標準モジュール *****************************************************************
    • good
    • 0
この回答へのお礼

おかげさまで解決いたしました
ありがとうございました!

お礼日時:2006/05/27 00:05

こんにちは。


>通常であればバーに対してひとつずつマクロをする
の意味が少しわかりませんでした。
CommandBars("Cell")に対して処理をするという事ではなく?

とりあえず別の案として、特定のBook/Sheetに対する処理であれば
ThisWorkbookモジュールのSheetBeforeRightClickイベント、もしくは
SheetモジュールのBeforeRightClickイベントについて調べてみられてはいかがでしょう。
【例】
Private Sub Workbook_SheetBeforeRightClick _
    (ByVal Sh As Object, ByVal Target As Range, Cancel As Boolean)
  If Target.Count = 1 Then
    MsgBox Target.Value 'Address(0, 0)
    Cancel = True
  End If
End Sub

この回答への補足

>通常であればバーに対してひとつずつマクロをする
日本語の使い方を間違っていました。すいません訂正します。
右クリックしたときに出てくるショートカットメニューには、メニューひとつにたいしてひとつのマクロを登録、または作成すると思います。
シートから50行ほど読み込み、それをそのままドロップダウンリストのようにショートカットメニューに表示させました。
それに対して50個のマクロを登録するのは大変です。
今回はドロップダウンリストのように、右クリックで選んだ項目の名前をそのままセルに出したいので、50個のマクロを1個のマクロで記述できたらいいな、というものでした。
最初の質問方法だと意味が伝わりにくいようだったので、繰り返し申し訳ありませんでした

補足日時:2006/04/24 22:58
    • good
    • 0
この回答へのお礼

回答ありがとうございます
上記の方の回答により解決しました
ご協力ありがとうございました

お礼日時:2006/04/24 23:20

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!