アプリ版:「スタンプのみでお礼する」機能のリリースについて

Excel 2016 32bitです。
excel のformを show vbModelessで開いています。

テキスト、ラジオボタン、リストボックス全部で90くらいの入力があります。

60中55名は問題なく、入力は出来るのですが
5名は、入力途中で、クラッシュしてしまい
重たくて、フォームが強制的に終了してしまいます。

入力した後のマクロでDoevants,sleepをがんがん入れましたが、まだまだクラッシュして、入力が出来ません

vbModelessをやめれば、解決するのですが、ユーザーが入力しながら、他のExcelみたいとのことでした。

この場合、どの様な解決策がありますでしょうか?

入力項目は減らせません

C#や、Javaで、アプリを作りたいのですが、私はエンジニアでないので、出来ればExcel vbaで解決したいのですが、何かいい方法はありますでしょうか?

A 回答 (1件)

こんにちは。



フォームが重くてクラッシュするなんて考えにくいなぁ。主原因ではないと思います。

フォームが強制終了すると言うより、画面から消えてしまって行方不明といったところかと思います。

ソースコードを見ないことには何とも言えませんが、Msgbox や別フォーム(例えばプログレス表示のため)が表示された後に消えるなど現象発生のタイミングに共通項はありませんか?

また、ソースで画面状態に依存するコード、例えば Activecell とか、select、activate、で画面を切り替えてる場合、doevents はむしろ無い方が良いかもしれません。

doevents は OS の割り込みを入れるものなので、タイミング、PCスペックなどによりプログラムの実行結果に影響がでる可能性があります。

入れるなら me.repaint が良いかもしれません。

あと、sleep は [VBAの実行を含む] Excel のスレッドをスリーブさせてしまいますから、例えば外部プログラムや OS など VBA 以外の処理待ちで使わないと、ただただ VBA の処理速度を落とすだけになります。
    • good
    • 1
この回答へのお礼

検索してもなかなかない、貴重な情報ありがとうございます。

一つのテキストボックス入力時とかではなく
クラッシュするタイミングはバラバラで

PCによってクラッシュしたり、しなかったりで困っています。

sleep,doeventsは外して、Me.repaintで試していきます。

お礼日時:2022/09/08 13:44

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!