こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

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

ExcelのVBAで悩んでいます

http://www.moug.net/tech/exvba/0090057.html

こちらのサイト様に書いてあるものを、そのまま使ってまったく問題無く希望通りの事をしてくれるのですが、右上の×を押してユーザーフォームを閉じようとしても条件が当てはまる為かメッセージボックスが表示されてしまいます。

このメッセージボックスを表示させない方法はありませんでしょうか?

正直、上記サイト様の記述通りでなくても構いません。
フォームのプロパティを変更するだけでいいならそれだけでも構いません。

どうかお知恵をお貸し下さいませ

投稿日時 - 2012-03-16 13:58:51

QNo.7365360

暇なときに回答ください

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

下記の様なコードを入力しておいてフォームを閉じると、

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

投稿日時 - 2012-03-16 17:41:22

補足

回答者様から頂いたものを実行ボタンを押す前に場所にそのままコピペするだけですんなり事は収まりましたが、まったく理解は出来ておりません;;;;

難しい事が書いてあるようにも見えませんしこれくらいは人に説明出来るくらいには勉強していこうと思います。
ありがとうございました。m(_ _)m

投稿日時 - 2012-03-16 22:44:00

お礼

簡素な質問から必要な文言を全部作っていただけて本当にありがとうございました。

今後一層のご活躍をお祈りいたしております。

それでは失礼致します。

投稿日時 - 2012-03-19 10:26:31

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(2)

ANo.2

#1です。Debug.Printをお使いになっていないのかな?

英語のサイトばかりヒットして、日本語の解説が見つかりにくいのですが、下記等をご覧下さい。
http://www.ken3.org/vba/iwind.html
http://excelvba.pc-users.net/fol8/8_1.html

#1のコードで、Debug.Print云々の行は、イベントの起こる順番を見るためのものですので、削除してOKです。

投稿日時 - 2012-03-17 21:06:51

お礼

イミディエイトウィンドウですか・・・・

まだ何が表示されてるのかよく判りませんが、便利そうな機能なので活用していこうと思います。

ありがとうございました。

投稿日時 - 2012-03-19 10:08:02

あなたにオススメの質問