- ベストアンサー
ACCESSのコンボボックスについて
ACCESSのコンボボックスに「012/015/028/125」等が設定されているて、 コンボボックスのプロパティの「入力チェック」は「はい」の設定になっております。 そういった場合、「12」と入力した場合、「012」とすることは可能でしょうか? テキストボックスの場合には、そのテキストボックスの更新後処理で Me.コード = Format(Me.コード, "000") のように記述し変更していたのですが・・・。 コンボボックスでは、「指定した値はリストにありません」と表示され、更新後処理がが実行されません。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
以下のようにしてみてください。 If Me!コンボ0.ListIndex = -1 Then MsgBox ("リストにデータはありません") Me!コンボ0 = Null Me!他のコントロール名.SetFocus Me!コンボ0.SetFocus Exit Sub End If 一旦、他のコントロールにフォーカスを 移し、再度もとのコンボボックスにフォーカスを 設定します。他のテキストボックスでもかまいません。
その他の回答 (2)
- piroin654
- ベストアンサー率75% (692/917)
>ですが、上記のように書いても、フォーカスだけは >次のコントロールに移動してしまいます。 コンボボックスに数値が存在すればコンボボックスに フォーカスを固定する必要はないので、とくにそのような 処置をほどこしてはいませんが。 コンボボックスに数値が存在しなければ、 If Me!コンボ0.ListIndex = -1 Then MsgBox ("リストにデータはありません") Me!コンボ0 = Null Me!コンボ0.SetFocus Exit Sub End If のようにコンボボックスに入力した数値を ご破算にして、フォーカスをコンボボックスに 置いて再入力を促すためのコードになっています。
補足
ありがとうございます。 入力値に間違えがあれば、piroin654の言う通り、フォーカスをコンボボックスに戻したいのですが、上記のように記述しても、メッセージが表示された後、次のタブ移動順であるコントロールにフォーカスが移動してしまいます。 それは何が原因なのでしょうか。
- piroin654
- ベストアンサー率75% (692/917)
「入力チェック」を「はい」にした場合、更新後処理では システムのエラーメッセージを阻止できないので、「入力チェック」 を「いいえ」にして、 更新後処理で、 Private Sub コンボ0_AfterUpdate() Me!コンボ0 = Format(Me!コンボ0, "000") If Me!コンボ0.ListIndex = -1 Then MsgBox ("リストにデータはありません") Me!コンボ0 = Null Me!コンボ0.SetFocus Exit Sub End If End Sub のようにするのが一番手っ取り早いのでは? ListIndexについては調べて確認してみてください。
お礼
ありがとうございます。 思う通りの動作ができました。 ですが、上記のように書いても、フォーカスだけは 次のコントロールに移動してしまいます。
お礼
ありがとうございます。 できました。