私はこの同様の問題に遭遇し、返信を読みました: Modeless form that still pause code execution
私は、 David Zemensの提案を自分の状況に適用しようと試みてきました。私の状況では、GoTo も利用せずに Zemen 氏の提案を取り入れたアプローチを見つけることができないようです。
より良い、またはよりエレガントなソリューションがあるかどうか疑問に思っています。
ここに私がやっていることの概要があります:
複数の Excel ワークブックでいくつかのアクションを実行するコードの実行を開始するコマンド ボタンを持つユーザー フォームがあります。このように、多数のコード ブロックがあり、1 つのコード ブロックが正常に完了すると、後続のコード ブロックの実行が可能になります。
ある時点で、状況によっては、コードにユーザー入力が必要になる場合があります。その他の状況では、必要なデータは Excel から取得できます。ユーザーからの入力が必要な場合は、別のユーザー フォームが表示されます。
ユーザーは、入力を入力する前にいくつかの異なる Excel シートを表示する必要がある場合があるため、UserForm はモードレスです。そのため、ユーザーが必要な入力を入力して別のコマンド ボタンをクリックするまで、コードは停止します。
この時点で、プログラムフローを再開する方法に問題があります。「中断したところから再開する」唯一の方法は、GoTo ステートメントを使用することですか? または、モジュールを編成して、1 つの場所で定義され、ユーザー入力が必要になる可能性のあるポイントから重複しない単一の一貫したプログラム フローが存在するようにする方法はありますか?