2

そこで、コンボ ボックスとテキスト ボックスを備えたフォームを Access で作成しました。フォームはボタンを押した後にいくつかのことを計算しますが、コンボ ボックスとテキスト ボックスの両方に入力する必要があるか、どちらにも入力できません。私がやりたいのは、それらの1つだけが満たされている場合、メッセージボックスがポップアップして両方のボックスを埋めるように説明し、コードを停止するように設定することです。メッセージ ボックス部分の実行方法は理解していますが、現在、メッセージ ボックスを表示してから、エラーを生成するコードを続行しています。

私はいくつかの調査を行いましたが、私が見つけたもののほとんどは、フォームを完全に停止するのではなく、一時的に一時停止することに関係しています。

これを行う方法についていくつかのアイデアがありますが、それらを実行するのに問題があり、率直に言って、それらが機能するかどうかさえわかりません. 私の最初の計画は、プロシージャからすべての計算部分をコピーして貼り付け、それらを使用して新しいプロシージャを作成し、ボタン クリック プロシージャで if ステートメントを作成し、if ステートメントを通過した場合に新しいプロシージャを呼び出すことでした。私の 2 番目の計画はもう少し面倒ですが、うまくいくと確信しています。コード全体をifステートメントで囲んでいるだけで、合格した場合はコードを実行し、合格しなかった場合は何もせず、手順の最後に到達して終了します。2番目のものに関する私の唯一の問題は、事前に大量のコードを持っていることです.行を再インデントするのに多くの時間を無駄にしたくないのですが、それができない場合はバックアップとして持っています.より良い方法を見つけてください。

4

3 に答える 3

3

いくつかのオプションを利用できます。

  1. あなたが提案したように、現在ボタンクリックイベントに関連付けられているコードを取得し、それを新しいサブプロシージャに移動します。ボタン クリック イベントで検証を実行し、すべてが成功した場合はサブ プロシージャを呼び出します。そうでない場合は、メッセージ ボックスを表示します。
  2. ボタン クリック イベントで適切なエラー処理が行われていると仮定すると、メッセージ ボックスを表示する代わりにエラーが発生します。これにより、制御フローがプロシージャ内のエラー ハンドラに移動します。
  3. メッセージ ボックスを表示した後、Exit Sub または Exit Function を使用してコードの実行を停止します。

オプション 1 は、より良いコーディング プラクティスを促進するため、おそらく最良のアプローチです。サブルーチンが長い場合は、サブルーチンを小さな作業単位に分割する必要があることを示している可能性があります。これにより、コードの再利用とデバッグがはるかに簡単になります。

オプション 2 は、条件が本当にエラーである場合に適しています。検証テストに失敗することは、エラー状態の一形態であると主張することができます。

個人的には、ほとんどの場合、Exit Sub と Exit Function (オプション 3) の使用を避ける傾向があります。これは、ルーチンが終了し、制御を呼び出し元のプロシージャに戻すサブ ルーチン内の 1 つのポイントが好きだからです。ルーチン内に複数の出口点があるということは、コードをリファクタリングする必要があること、または適用するロジックを再考する必要があることを示しています。仕方がないこともありますが、多くの場合、デバッグがより困難な状況を作り出します。

于 2012-06-15T14:41:50.890 に答える
1

メッセージボックスをポップアップすると、手順に応じて Exit Sub または Exit Function を使用できるはずです。コードの実行を停止し、プロシージャを終了する必要があります。

于 2012-06-15T14:33:57.680 に答える