Home > 即効テクニック > Excel VBA > セル操作関連のテクニック > 空白セルをダブルクリックしたらコンボボックスを表示し、選択された値をセルに表示する

即効テクニック

セル操作関連のテクニック

空白セルをダブルクリックしたらコンボボックスを表示し、選択された値をセルに表示する

(Excel 97/2000)
あるシートの空白セルをダブルクリックすると、コンボボックスが表示されます。そのコンボボックスに値を指定したら、ダブルクリックした空白セルに値が表示されるようにします。
まず、コンボボックスを配置したフォームを用意します。フォームの名前は「UserForm1」、コンボボックスの名前は「ComboBox1」です
シートのセルがダブルクリックされた時に発生するイベント「Worksheet_BeforeDoubleClick」で次の処理を行います。
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)

    If Target.Value = "" Then
        UserForm1.Show
        Cancel = True
    End If

End Sub
ダブルクリックされたセルが空白だった場合は、フォームを表示します。「Cancel = True」では、ダブルクリックされたセルが編集モードにならないようにしています。
次に、フォームが表示された時に発生するイベント「UserForm_Initialize」で、コンボボックスのリストを用意します。リストには単位を表す値を設定します。
Private Sub UserForm_Initialize()

    Dim a As Variant
    Dim i As Integer

    a = Array("mm", "m", "g", "Kg", "ペソ")
    For i = 0 To 4
        ComboBox1.AddItem a(i)
    Next

End Sub
コンボボックスに値が指定された時に発生するイベント「ComboBox1_Change」で、ダブルクリックされたセルにコンボボックスの値を入力する処理を行い、フォームを閉じます。
Private Sub ComboBox1_Change()

    ActiveCell.Value = ComboBox1.Value

    UserForm1.Hide

End Sub