Excel VBA質問箱 IV

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

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


53841 / 76732 ←次へ | 前へ→

【27698】Re:コンボボックを使いたい
回答  Kein  - 05/8/16(火) 17:24 -

引用なし
パスワード
   コンボボックスには、フォームツールバーのものとコントロールツールボックスのもの
があります。ユーザーフォームに配置するなら後者に限られますが、シート上に配置
するならどちらでも選択できます。ただその場合、フォームツールバーのの方は
エクセルに組み込まれたコントロールなので、安定性の点で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

0 hits

【27696】コンボボックを使いたい zondag 05/8/16(火) 16:57 質問
【27698】Re:コンボボックを使いたい Kein 05/8/16(火) 17:24 回答
【27700】Re:コンボボックを使いたい zondag 05/8/16(火) 17:51 質問
【27702】Re:コンボボックを使いたい Kein 05/8/16(火) 19:31 回答
【27726】Re:コンボボックを使いたい zondag 05/8/17(水) 10:37 質問
【27729】Re:コンボボックを使いたい Kein 05/8/17(水) 12:46 発言
【27730】Re:コンボボックを使いたい zondag 05/8/17(水) 13:04 発言
【27731】Re:コンボボックを使いたい Kein 05/8/17(水) 13:13 発言
【27734】Re:コンボボックを使いたい zondag 05/8/17(水) 13:41 質問
【27743】Re:コンボボックを使いたい Kein 05/8/17(水) 17:21 回答
【27769】Re:コンボボックを使いたい zondag 05/8/18(木) 17:55 お礼

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