教えて!ExcelVBA!

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

【ExcelVBA フォーム&コントロール】フォーカスがなくてもEnterキーでクリックできるボタンを作成する方法を教えて!

構文

構文は以下の通りです。

コマンドボタン名.Default = True

解説

コマンドボタンを既定ボタンにするには、DefaultプロパティをTrueに設定します。コマンドボタン名には対象となるボタンの名前を指定します。既定ボタンに指定すると、フォーム上でEnterキーを押すと自動的に反応します。

使い方

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

Private Sub UserForm_Activate()
    ' 既定ボタンを設定
    CommandButton1.Default = True
End Sub

上記は、フォームがアクティブになった時に既定ボタンを設定します。

プログラミング例

以下にプログラミング例を幾つか紹介します。これらの例は、UserForm上にテキストボックスやコマンドボタンを配置し、既定ボタンを設定して様々なアクションを実行する方法を示しています。ユーザーがテキストを入力して、その内容を取得したり、数値を加算したり、ファイルの保存を行ったりする簡単なシナリオです

(例1)テキストボックスに入力した内容を処理する例

Private Sub UserForm_Activate()
    ' 既定ボタンを設定
    CommandButton1.Default = True
End Sub

Private Sub CommandButton1_Click()
    ' テキストボックスの内容を取得して処理
    Dim userInput As String
    userInput = TextBox1.Value
    MsgBox "入力内容: " & userInput
End Sub

(例2)数値の加算を行う例

Private Sub UserForm_Activate()
    ' 既定ボタンを設定
    CommandButton1.Default = True
End Sub

Private Sub CommandButton1_Click()
    ' テキストボックスの内容を数値として取得して加算処理
    Dim num1 As Double
    Dim num2 As Double
    num1 = CDbl(TextBox1.Value)
    num2 = CDbl(TextBox2.Value)
    MsgBox "結果: " & num1 + num2
End Sub

(例3)ファイルの保存を行う例

Private Sub UserForm_Activate()
    ' 既定ボタンを設定
    CommandButton1.Default = True
End Sub

Private Sub CommandButton1_Click()
    ' ファイル名を取得して保存処理
    Dim fileName As String
    fileName = Application.GetSaveAsFilename(InitialFileName:="新しいファイル.xlsx", _
                                            FileFilter:="Excelファイル, *.xlsx")
    If fileName <> "False" Then
        ' ファイル保存処理
        ' 例として新しいワークブックを作成して保存
        Workbooks.Add
        ActiveWorkbook.SaveAs fileName
        ActiveWorkbook.Close
        MsgBox "ファイルが保存されました。"
    End If
End Sub

まとめ

コマンドボタンの既定ボタン(Default)について、フォーム上でEnterキーを押すと自動的に反応する機能について解説しました。コマンドボタンを既定ボタンに設定することで、ユーザーの操作を簡略化し、より使いやすいフォームを作成することができます。是非活用してください。