|
コンボボックスには、フォームツールバーのものとコントロールツールボックスのもの
があります。ユーザーフォームに配置するなら後者に限られますが、シート上に配置
するならどちらでも選択できます。ただその場合、フォームツールバーのの方は
エクセルに組み込まれたコントロールなので、安定性の点でActiveXより優れている
ようです。よって「任意のセルをダブルクリックしたら、その位置へフォーム
ツールバーのコンボボックスを配置し、1,2,3 というリストを選択した瞬間に
それぞれの処理を行うマクロを起動する」という形を提示してみます。
↓シートモジュールに入れます。
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, _
Cancel As Boolean)
Dim Lp As Single, Tp As Single
Dim Wp As Single, Hp As Single
Dim i As Integer
Cancel = True
ActiveSheet.DropDowns.Delete
With Target
Lp = .Left: Tp = .Top
Wp = .Width: Hp = .Height
End With
With ActiveSheet.DropDowns.Add(Lp, Tp, Wp, Hp)
For i = 1 To 3
.AddItem "処理 " & i
Next i
.OnAction = "SetMacro"
End With
End Sub
↓標準モジュールに入れます。
Sub SetMacro()
Dim x As Variant
x = Application.Caller
If VarType(x) <> 8 Then Exit Sub
With ActiveSheet.DropDowns(x)
Select Case .ListIndex
Case 1: Call A
Case 2: Call B
Case 3: Call C
End Select
.Delete
End With
End Sub
Sub A()
ここに A の処理を書く
End Sub
Sub B()
ここに B の処理を書く
End Sub
Sub C()
ここに C の処理を書く
End Sub
|
|