24.2.10

2007-05-07 - Cassiopeiaの日記

2007-05-07 - Cassiopeiaの日記より
: "■[Excel VBA]Excelのコンテキストメニュー(右クリックメニュー)に独自のメニューを追加する。

■使用上の注意

RemoveCellMenu()で追加したメニューを削除しないと、どんどん同じメニューが追加されてしまいます。 あなたが実際に使うマクロを創るときには追加したメニューを自動的に削除してから終了するようにするなり、すでに独自メニューがあるときはさらに独自メニューを追加しないようなコードを追加してください。

'AddCellMenu()で独自のメニューをコンテキストメニュー
'(右クリックメニュー)に追加する。
'RemoveCellMenu()で追加したメニューを削除する。


Sub AddCellMenu()
Dim MyCellMenu As CommandBarControl

Application.CommandBars('Cell').Controls.Item('切り取り(&T)').BeginGroup = True
'区切り線を追加しています。

Set MyCellMenu_01 = CommandBars('Cell'). _
Controls.Add(Type:=msoControlButton, before:=1)

With MyCellMenu_01
.Caption = '電卓起動!'
.FaceId = 50
.OnAction = 'ExecCalc'
End With

Set MyCellMenu_02 = CommandBars('Cell'). _
Controls.Add(Type:=msoControlButton, before:=1)

With MyCellMenu_02
.Caption = '数字だったら2倍する!'
.FaceId = 102
.OnAction = 'NumW'
End With

End Sub

Sub RemoveCellMenu()
CommandBars('Cell').Controls.Item('電卓起動!').Delete
CommandBars('Cell').Controls.Item('数字だったら2倍する!').Delete
CommandBars('Cell').Controls('切り取り(&T)').BeginGroup = False
End Sub

Sub ExecCalc()
Shell 'calc'
End Sub

Sub NumW()
If IsNumeric(ActiveCell.Value) Then
ActiveCell.Value = ActiveCell.Value * 2
Else
'zzz...
End If
End Sub"

0 件のコメント:

コメントを投稿