教えて!ExcelVBA!

ExcelVBAの基礎知識・書き方について紹介します。

【ExcelVBA フォーム&コントロール】フォームがダブルクリックされた時に処理を実行する方法を教えて!

構文

構文は以下の通りです。

Private Sub UserForm_DblClick(ByVal Cancel As MSForms.ReturnBoolean)
    ' ここに処理したいコードを記述します
End Sub

解説

DblClickイベントは、ユーザーフォームがダブルクリックされたときに発生するイベントです。このイベントを利用することで、フォームがダブルクリックされた瞬間に特定の処理を実行することができます。

引数 内容
Cancel イベントが終了する前に設定できる特殊な変数で、Trueを設定すると処理がキャンセルされ、Falseを設定すると処理が実行されます。

使い方

具体的な使い方について紹介します。

Private Sub UserForm_DblClick(ByVal Cancel As MSForms.ReturnBoolean)
    ' ダブルクリックされたときにメッセージボックスを表示
    MsgBox "フォームがダブルクリックされました!"
    ' Cancel引数を使ってイベントのキャンセルを制御する例
    If SomeCondition = True Then
        Cancel = True ' イベントをキャンセル
    Else
        Cancel = False ' イベントをキャンセルしない
    End If
End Sub

この例では、ダブルクリックイベントが発生したときに、メッセージボックスを表示しています。さらに、SomeConditionという条件がTrueの場合、イベントがキャンセルされるようにCancel引数をTrueに設定しています。イベントがキャンセルされると、フォームのダブルクリックに対するデフォルトの動作が実行されなくなります。

プログラミング例

以下に、プログラミング例を幾つか紹介します。

例1:ダブルクリックでフォームを非表示にする

Private Sub UserForm_DblClick(ByVal Cancel As MSForms.ReturnBoolean)
    Me.Hide
End Sub

ダブルクリックされると、Me.Hideによってフォームが非表示になります。このようにして、特定の条件が満たされたときにフォームを非表示にしたり、再表示したりすることができます。

例2:ダブルクリックでフォームのテキストボックスに入力

Private Sub UserForm_DblClick(ByVal Cancel As MSForms.ReturnBoolean)
    ' ダブルクリックされたときにテキストボックスに"Hello, World!"を入力する
    Me.TextBox1.Value = "Hello, World!"
End Sub

ダブルクリックされると、フォームのテキストボックスに"Hello, World!"という文字列が自動的に入力されます。このようにして、フォームのコントロールに対してプログラムから値を設定することができます。

例3:ダブルクリックで乱数を生成して表示

Private Sub UserForm_DblClick(ByVal Cancel As MSForms.ReturnBoolean)
    ' ダブルクリックされたときに乱数を生成してラベルに表示する
    Dim randomNum As Integer
    Randomize ' 乱数ジェネレータを初期化
    randomNum = Int((100 * Rnd) + 1) ' 1から100までの乱数を生成
    Me.Label1.Caption = "乱数: " & randomNum
End Sub

ダブルクリックされるたびに、フォーム上のラベルに1から100までの乱数が表示されます。Rnd関数を使用して乱数を生成し、Label1.Captionプロパティを使用してラベルに表示しています。

まとめ

DblClickイベントを使うことで、ユーザーがフォームをダブルクリックしたときに特定のコードを実行することができます。ユーザーとの対話性を高めるために重要な役割を果たします。是非活用してください。