Excel-VBAでPlease Wait
メッセージを作成しようとしています。これは、プロセスがまだ進行中であることをユーザーにSQLクエリを処理するように通知するためです。Excel VBA「お待ちください」ポップアップメッセージ
このメッセージをユーザーフォームに表示したいと考えています。
現在、ユーザーはsql dbに接続し、dbとその他のオプションを選択し、[Go ...]を押します。フォームはアンロードされません。 Goのポイントで私はメッセージPlease Wait
でポップアップする別のフォームを持っていますが、このフォームはアンロードされません。つまり、sql executeコマンドは実行されません。
ラベルを含めPlease Wait
ユーザーフォーム、呼び出すための私のコード:私は別のコードモジュールで
Call WaitShowSQl.ExecuteCall KillWaitCall WaitShow
SQl.Execute
Call KillWait
を:
Sub WaitShow()
Wait.Show
End Sub
Sub KillWait()
Unload Wait
End Sub
私はユーザーフォームは、次のコードでwait
と呼ばれています:
Private Sub UserForm_Activate()
Call PleaseWait
End Sub
Sub PleaseWait()
Wait.Label1.Caption = "Calculating...Please Wait!"
End Sub
コードを実行すると、実行時do
SQl.ExecuteSQl.Execute
は私がステータスバーとプログラムの進行状況を表示することができますが、ユーザーフォームは、このプログラムのために非常に有用であろうメッセージをポップアップ表示:ES次のコマンドを実行するために戻ってモジュールを介して移動しません。
THanks for reply GTG。私はすでにこれを試してこれを取得しています:モーダルフォームが表示されているときに非モーダルフォームを表示できません。 – Fwafa
また、ユーザーがオプションを選択した最初のフォームがまだ表示されていることを忘れていました。 – Fwafa
最初のフォームをモーダルにする必要があると仮定すると、SQL実行コードを「待機中の」ユーザーフォームに配置するか、「待機中の」ユーザーフォームから親フォームの関数を呼び出すことができます。そうすれば、余分なモジュールは必要ありません。 3番目のオプションは、 "Waiting"フォームのActiveX .exeを作成し、そのプロセスにモードレス "Waiting"フォームを表示させることです。ただし、Excelシートとともにその.exeを展開する必要があります。 – GTG