• ベストアンサー

フォームのテキストボックスが空白なら移動させない

ExcelのVBAで悩んでいます http://www.moug.net/tech/exvba/0090057.html こちらのサイト様に書いてあるものを、そのまま使ってまったく問題無く希望通りの事をしてくれるのですが、右上の×を押してユーザーフォームを閉じようとしても条件が当てはまる為かメッセージボックスが表示されてしまいます。 このメッセージボックスを表示させない方法はありませんでしょうか? 正直、上記サイト様の記述通りでなくても構いません。 フォームのプロパティを変更するだけでいいならそれだけでも構いません。 どうかお知恵をお貸し下さいませ

質問者が選んだベストアンサー

  • ベストアンサー
  • mitarashi
  • ベストアンサー率59% (574/965)
回答No.1

下記の様なコードを入力しておいてフォームを閉じると、 UserForm_QueryClose Event TextBox_Exit Event UserForm_Terminte Event の順にイベントが起こる事が分かります。したがって、UserFormQueryCloseEventの際にフラグを立てて、TextBox1_Exitの中で、上記フラグが立っていれば抜けるようにすればいかがでしょうか。 下記コードにはそれも盛り込んであります。 質問者様のコード全容は分かりませんので、外していたら済みません。 Dim closingFlag As Boolean Private Sub TextBox1_Exit(ByVal Cancel As MSForms.ReturnBoolean) Debug.Print "TextBoxExitEvent" If closingFlag Then Exit Sub If Len(TextBox1.Value) = 0 Then MsgBox "データを入力してください" Cancel = True End If End Sub Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer) Debug.Print "UserFormQueryCloseEvent" closingFlag = True End Sub Private Sub UserForm_Terminate() Debug.Print "UserFormTerminteEvent" End Sub

go-to
質問者

お礼

簡素な質問から必要な文言を全部作っていただけて本当にありがとうございました。 今後一層のご活躍をお祈りいたしております。 それでは失礼致します。

go-to
質問者

補足

回答者様から頂いたものを実行ボタンを押す前に場所にそのままコピペするだけですんなり事は収まりましたが、まったく理解は出来ておりません;;;; 難しい事が書いてあるようにも見えませんしこれくらいは人に説明出来るくらいには勉強していこうと思います。 ありがとうございました。m(_ _)m

すると、全ての回答が全文表示されます。

その他の回答 (1)

  • mitarashi
  • ベストアンサー率59% (574/965)
回答No.2

#1です。Debug.Printをお使いになっていないのかな? 英語のサイトばかりヒットして、日本語の解説が見つかりにくいのですが、下記等をご覧下さい。 http://www.ken3.org/vba/iwind.html http://excelvba.pc-users.net/fol8/8_1.html #1のコードで、Debug.Print云々の行は、イベントの起こる順番を見るためのものですので、削除してOKです。

go-to
質問者

お礼

イミディエイトウィンドウですか・・・・ まだ何が表示されてるのかよく判りませんが、便利そうな機能なので活用していこうと思います。 ありがとうございました。

すると、全ての回答が全文表示されます。

関連するQ&A