web-dev-qa-db-ja.com

Unload Meでユーザーフォームを閉じることができない

ユーザーが送信ボタンをクリックして操作が実行されたときに、VBAを使用してExcelユーザーフォームを閉じる必要があります。

ユーザーフォームをそれ自体から閉じるにはどうすればよいですか?

これを試しましたが、361エラーが返されます。

Unload Me
23
Kian

一番上の回答で指定されているように、ボタンコントロールの背後のコードで次のコードを使用しました。

Private Sub btnClose_Click()
    Unload Me
End Sub

そうすることで、コントロールをアンロードしようとするのではなく、ボタンコントロールが存在するユーザーフォームをアンロードします。 「Me」キーワードは、ユーザーフォームのコントロールから呼び出された場合でも、ユーザーフォームオブジェクトを指します。この手法でエラーが発生する場合、いくつかの理由が考えられます。

  1. 間違った場所にコードを入力している可能性があります(別のモジュールなど)

  2. 古いバージョンのOfficeを使用している可能性があります。 Office 2013を使用しています。VBAは時間の経過とともに変化することに気付きました。

私の経験から、DoCmd ....メソッドの使用はMS Accessのマクロ機能により固有ですが、Excel VBAでは一般的に使用されません。

通常の(箱から出して)状態では、上記のコードは問題なく動作するはずです。

25
user4059073

完全なコードを見ることなく、これを確実に答えることは不可能です。このエラーは通常、フォームではなくコントロールをアンロードしようとしたときに発生します。

括弧内に「私」がいないことを確認してください。

また、ユーザーフォームの完全なコードを投稿できる場合は、非常に役立ちます。

11
SWa

Unload Meは、userform selfから呼び出された場合にのみ機能します。別のモジュールコード(またはユーザーフォーム)からフォームを閉じる場合は、Unload関数+ userformtoclose名を使用する必要があります。

私はそれが助けてくれることを願っています

4
Tomamais