• ベストアンサー

ACCESSのコンボボックスについて

ACCESSのコンボボックスに「012/015/028/125」等が設定されているて、 コンボボックスのプロパティの「入力チェック」は「はい」の設定になっております。 そういった場合、「12」と入力した場合、「012」とすることは可能でしょうか? テキストボックスの場合には、そのテキストボックスの更新後処理で Me.コード = Format(Me.コード, "000") のように記述し変更していたのですが・・・。 コンボボックスでは、「指定した値はリストにありません」と表示され、更新後処理がが実行されません。

質問者が選んだベストアンサー

  • ベストアンサー
  • piroin654
  • ベストアンサー率75% (692/917)
回答No.3

以下のようにしてみてください。 If Me!コンボ0.ListIndex = -1 Then   MsgBox ("リストにデータはありません")   Me!コンボ0 = Null   Me!他のコントロール名.SetFocus   Me!コンボ0.SetFocus   Exit Sub End If 一旦、他のコントロールにフォーカスを 移し、再度もとのコンボボックスにフォーカスを 設定します。他のテキストボックスでもかまいません。

rabu_chihaha
質問者

お礼

ありがとうございます。 できました。

その他の回答 (2)

  • piroin654
  • ベストアンサー率75% (692/917)
回答No.2

>ですが、上記のように書いても、フォーカスだけは >次のコントロールに移動してしまいます。 コンボボックスに数値が存在すればコンボボックスに フォーカスを固定する必要はないので、とくにそのような 処置をほどこしてはいませんが。 コンボボックスに数値が存在しなければ、 If Me!コンボ0.ListIndex = -1 Then   MsgBox ("リストにデータはありません")   Me!コンボ0 = Null   Me!コンボ0.SetFocus   Exit Sub End If のようにコンボボックスに入力した数値を ご破算にして、フォーカスをコンボボックスに 置いて再入力を促すためのコードになっています。

rabu_chihaha
質問者

補足

ありがとうございます。 入力値に間違えがあれば、piroin654の言う通り、フォーカスをコンボボックスに戻したいのですが、上記のように記述しても、メッセージが表示された後、次のタブ移動順であるコントロールにフォーカスが移動してしまいます。 それは何が原因なのでしょうか。

  • piroin654
  • ベストアンサー率75% (692/917)
回答No.1

「入力チェック」を「はい」にした場合、更新後処理では システムのエラーメッセージを阻止できないので、「入力チェック」 を「いいえ」にして、 更新後処理で、 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については調べて確認してみてください。

rabu_chihaha
質問者

お礼

ありがとうございます。 思う通りの動作ができました。 ですが、上記のように書いても、フォーカスだけは 次のコントロールに移動してしまいます。

関連するQ&A