見出し画像

ユーザーフォームを閉じる方法

 エクセルVBAのユーザーフォームを閉じる方法は、主に以下の3つがあります。

  1. Unload Me メソッドを使用する

 これは、最も一般的で簡単な方法です。Unload Me メソッドを呼び出すことで、ユーザーフォームをメモリからアンロードし、画面から消去します。

VBA
Private Sub CommandButton1_Click()
Unload Me
End Sub
コードは注意してご使用ください。

 このコードは、CommandButton1 がクリックされたときに実行されます。Unload Me を呼び出すことで、UserForm1 が閉じられます。

  1. Me.Close メソッドを使用する

 Me.Close メソッドを使用しても、ユーザーフォームを閉じることができます。
 この方法は、Unload Me メソッドとほぼ同じですが、Me.Close メソッドは、ユーザーフォームが閉じられる前に Form_QueryClose イベントを呼び出すという点で異なります。

VBA
Private Sub CommandButton1_Click()
Me.Close
End Sub
コードは注意してご使用ください。

このコードは、CommandButton1 がクリックされたときに実行されます。Me.Close を呼び出すことで、UserForm1 が閉じられます。

  1. vbFormControlMenu 定数をを使用する

vbFormControlMenu 定数をを使用すると、ユーザーフォームの右上に閉じるボタン ([×]) を表示することができます。このボタンをクリックすると、ユーザーフォームが閉じられます。

VBA
UserForm1.Show vbModeless vbFormControlMenu
コードは注意してご使用ください。

 このコードは、UserForm1 をモーダルではないフォームとして表示し、閉じるボタンを表示します。

補足

 ユーザーフォームを閉じる前に、ユーザーが入力したデータの保存が必要な場合は、Unload Me または Me.Close を呼び出す前にデータを保存する必要があります。
 ユーザーフォームが閉じられる前に何か処理を行う必要がある場合は、Form_QueryClose イベントを使用することができます。

参考資料

【エクセルVBA】ユーザーフォームに『閉じる』ボタンを追加する
VBA応用(ユーザーフォームの閉じる([×])ボタン制御)
【ExcelVBA フォーム&コントロール】フォームの[X]ボタンでフォームを閉じられない様にする方法を教えて

いいなと思ったら応援しよう!