ユーザーフォームを閉じる方法
エクセルVBAのユーザーフォームを閉じる方法は、主に以下の3つがあります。
Unload Me メソッドを使用する
これは、最も一般的で簡単な方法です。Unload Me メソッドを呼び出すことで、ユーザーフォームをメモリからアンロードし、画面から消去します。
VBA
Private Sub CommandButton1_Click()
Unload Me
End Sub
コードは注意してご使用ください。
このコードは、CommandButton1 がクリックされたときに実行されます。Unload Me を呼び出すことで、UserForm1 が閉じられます。
Me.Close メソッドを使用する
Me.Close メソッドを使用しても、ユーザーフォームを閉じることができます。
この方法は、Unload Me メソッドとほぼ同じですが、Me.Close メソッドは、ユーザーフォームが閉じられる前に Form_QueryClose イベントを呼び出すという点で異なります。
VBA
Private Sub CommandButton1_Click()
Me.Close
End Sub
コードは注意してご使用ください。
このコードは、CommandButton1 がクリックされたときに実行されます。Me.Close を呼び出すことで、UserForm1 が閉じられます。
vbFormControlMenu 定数をを使用する
vbFormControlMenu 定数をを使用すると、ユーザーフォームの右上に閉じるボタン ([×]) を表示することができます。このボタンをクリックすると、ユーザーフォームが閉じられます。
VBA
UserForm1.Show vbModeless vbFormControlMenu
コードは注意してご使用ください。
このコードは、UserForm1 をモーダルではないフォームとして表示し、閉じるボタンを表示します。
補足
ユーザーフォームを閉じる前に、ユーザーが入力したデータの保存が必要な場合は、Unload Me または Me.Close を呼び出す前にデータを保存する必要があります。
ユーザーフォームが閉じられる前に何か処理を行う必要がある場合は、Form_QueryClose イベントを使用することができます。
参考資料
【エクセルVBA】ユーザーフォームに『閉じる』ボタンを追加する
VBA応用(ユーザーフォームの閉じる([×])ボタン制御)
【ExcelVBA フォーム&コントロール】フォームの[X]ボタンでフォームを閉じられない様にする方法を教えて