2017-09-04 7 views
0

私が誤って閉じることができなかったユーザーフォームを作成したとき、私は今日、ユーザーフォームを編集したQuery_Closeの取り消し引数が常にTrueと等しい場合に、ユーザーフォームを閉じる方法は?

Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer) 
    ' Logic that always evaluated to: 
    Cancel = True 
End Sub 

ShowModalプロパティをTrueに設定されているので、それはですので、あなたがExcelやVBEと対話することはできません一見フォームを殺すことは不可能です。 CloseMode(Alt-F4など)に関係なく、ロジックは常にCancel = Trueと評価されます。最終的な解決策は、ブックを保存し、タスクマネージャを使用してExcelを終了することでした。すべての情報が正しく保存されているので、これはうまくいきましたが、これはむしろ避けたいと思うかなり汚い解決策です。

これらの質問:不適切それが解消されないいくつかのエラーが発生し、ブックを閉じると

契約。

Cancelは常にQuery_CloseイベントでTrueに等しいとき、ユーザーフォーム(それがすでにロードされている)を閉鎖する方法はありますか?

+0

短い答え:いいえ、それはcancelプロパティのためのものです。フォームを閉じる方法を適切に有効にすることはプログラマの責任です。 – jkpieterse

+0

キャンセルをゼロに設定する - https://msdn.microsoft.com/VBA/Language-Reference-VBA/articles/queryclose-eventを参照してください – Absinthe

答えて

1

エディタを開いても、コードを停止することはできますが、編集時には常にそうでなければなりません。それ以外に、タスクバーからExcelを閉じることができます。右クリックすると、変更が加えられた場合、保存プロンプトが表示され、キャンセルするとフォームが消えます。
しかし、プログラミングは賢明ではありません。これらの種類のフォームは作成されるべきではありません。

+0

コードを停止することを考えたことがないとは思えません。タスクバーでブックを閉じると、保存のプロンプトは表示されず、VBEが閉じられます。それにかかわらず、Ctrl + Breakキーを押すと、コードを完全に停止して停止します。 – TheFizh

+0

また、その行にブレークポイントを置き、必要に応じてFalseに編集することもできます。 – Rory

0

フォームの右上隅に赤いXが表示され、これを押すとフォームを閉じることができます。このようなボタンなしでフォームを作成した場合は、コマンドボタンをクリックして、このボタンをクリックしてプロシージャを実行する必要があります。その手続きには、Me.Hideという行が含まれていなければなりません。それはフォームを閉じますが、メモリ内に残り、Showコマンドで呼び出すことができます。 フォームのコードにUnloadコマンドを使用しないでください。このコマンドは、フォームを開くコードに配置する必要があります。順序は、フォームを作成して表示し、非表示にして最後にアンロードすることです。 ShowHideの間にフォームが制御されます。

関連する問題