Excel (VBA)

Excel VBAに関するフォーラムです。
  • 掲示板への投稿には会員登録(無料)が必要です。会員登録がまだの方はこちら
  • 掲示板ご利用上のお願い」に反するご記入はご遠慮ください。
  • Q&A掲示板の使い方はこちらをご覧ください
トピックに返信
質問

 
(指定なし : 指定なし)
ユーザーフォームの内容が変わったかどうか
投稿日時: 22/03/25 07:24:05
投稿者: goudoufu

ユーザーフォームを閉じるとき、登録ボタンが押されていなかったら
「登録ボタンを押していないけど大丈夫?」という確認のメッセージを出すようにしています。
ただ、毎回出るのはうっとうしいので
いずれかの項目が変更されたときだけにしたいのですが
1つずつ最初に変数をとって最後に確認するには
項目数が多く、コードを作成するのが面倒に感じてしまいます…。
 
コンボボックス、テキストボックスがそれぞれ複数配置されたユーザーフォームですが
開いてから閉じるまでの間にどこかが変更されたかどうか
効率よくコードを書く方法があれば御教示いただけるとありがたいです。

回答
投稿日時: 22/03/25 08:43:40
投稿者: simple

変更したら何かの変数(例: changeFlagとか)をTrueにすればよいと思いますが、
それで目的を果たしたことになるのか、よくわかりません。
 
そもそもですけど、
・「登録」とはどの範囲の情報を、どこに登録しているんでしょうか?
・UserFormを表示するとき、Initializeプロシージャでそれらを復元しているんでしょうか?
登録漏れを防ぐなら、その登録処理を必須にすればよい、という訳でもないんですか。
話の前提がよくわからないので、説明いただくとよいかもしれません。

回答
投稿日時: 22/03/25 13:24:10
投稿者: WinArrow
投稿者のウェブサイトに移動

goudoufu さんの引用:

ユーザーフォームを閉じるとき、登録ボタンが押されていなかったら
「登録ボタンを押していないけど大丈夫?」という確認のメッセージを出すようにしています。
ただ、毎回出るのはうっとうしいので
いずれかの項目が変更されたときだけにしたいのですが
1つずつ最初に変数をとって最後に確認するには
項目数が多く、コードを作成するのが面倒に感じてしまいます…。
 
コンボボックス、テキストボックスがそれぞれ複数配置されたユーザーフォームですが
開いてから閉じるまでの間にどこかが変更されたかどうか
効率よくコードを書く方法があれば御教示いただけるとありがたいです。

 
効率がよいか否かはわかりませんが、
私が使っている方法を紹介します。
 
1つ目:
「登録」ボタンウリックイベントで、内容の妥当性を検証後、
コマンドボタンを無効にします。
理由は、重複登録を避けるためです。
 
2つ目
「コンボボックス」など、入力用コントロールで、「値」が変わったことを確認する方法。
 
_Enterイベントで、.Tagに「値」を転送します。
_AfterUpdate、_Exitなど、適当なイベントで、
.Tag と .Textを比較すれば、変わったことを確認できます。

トピックに返信