Sub AddMenu()
Dim NewM As Variant, NewC As Variant
''(1)[新しいメニュー]というメニューを作成します
Set NewM = CommandBars("Worksheet Menu Bar").Controls.Add(Type:=msoControlPopup)
With NewM
.Caption = "新しいメニュー(&C)"
End With
''(2)作成したメニューに2つのコマンドを登録します
Set NewC = NewM.Controls.Add
With NewC
.Caption = "1行目の処理" ''1つ目コマンド名
.OnAction = "Action_Row" ''実行するマクロ
.FaceId = 541
End With
Set NewC = NewM.Controls.Add
With NewC
.Caption = "1列目の処理" ''2つ目コマンド名
.OnAction = "Action_Column" ''実行するマクロ
.FaceId = 542
End With
End Sub
Sub AddMenu()
With CommandBars("Worksheet Menu Bar").Controls.Add(Type:=msoControlPopup)
.Caption = "新しいメニュー(&C)" ''新しいメニューを登録する
.OnAction = "ChangeMenu" ''メニューがクリックされたとき実行するマクロ
.Controls.Add ''空のコマンド1
.Controls.Add ''空のコマンド2
End With
End Sub
Sub ChangeMenu()
With CommandBars("Worksheet Menu Bar").Controls("新しいメニュー(&C)")
If Selection.Rows.Count > 1 Then
With .Controls(1)
.Caption = ActiveCell.Row & "行目の処理"
.Enabled = False
.FaceId = 330
.OnAction = "Action"
End With
Else
With .Controls(1)
.Caption = ActiveCell.Row & "行目の処理"
.Enabled = True
.FaceId = 541
.OnAction = "Action"
End With
End If
If Selection.Columns.Count > 1 Then
With .Controls(2)
.Caption = ActiveCell.Column & "列目の処理"
.Enabled = False
.FaceId = 330
.OnAction = "Action"
End With
Else
With .Controls(2)
.Caption = ActiveCell.Column & "列目の処理"
.Enabled = True
.FaceId = 542
.OnAction = "Action"
End With
End If
End With
End Sub
Sub Action()
Select Case True
Case InStr(CommandBars.ActionControl.Caption, "行") > 0
With ActiveCell
MsgBox .Row & "行目の高さは" & .RowHeight, 64
End With
Case InStr(CommandBars.ActionControl.Caption, "列") > 0
With ActiveCell
MsgBox .Column & "列目の幅は" & .ColumnWidth, 64
End With
Case Else
End Select
End Sub