• ベストアンサー

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

  • コンボボックスのリスト外入力について(Access2002)

    お世話になっております。 ひとつお聞きしたいのですが、Accessのコンボボックスプロパティの「リスト外入力」の設定のしかたが分かりません。 コンボボックスを非連結にして、コンボボックスより選択してフィルタをかける動作と、コンボボックスに値がなかったらコンボボックスに直接入力して新しい値を元に新規にレコードを追加すると言ったロジックを組み込みたいのですが可能でしょうか?よろしくお願いいたします。 まとめると、 (1)コンボボックスより値を選択して、フィルタをかける。 (2)コンボボックスに値が無かったら、コンボボックスに直接入力して新規レコードとして、レコードを追加する こう言った、流れでの作業です。

  • コンボボックスに設定する値

    ユーザーフォーム上のコンボボックスに設定する値を ワークシートの入力規則のリストで設定した値から参照するにはどうしたらいいでしょうか? 入力規則の値は、元の値のテキストボックス?に直接入力されているので これをどこかのセル範囲を参照して~というのはナシでお願いします。

  • コンボボックスの自動更新について

    コンボボックスの自動更新について エクセルのVBAで、ユーザーフォームを使用しています。 ユーザーフォームの中には「入力」ボタンとコンボボックスと テキストボックスがあります。 コンボボックスは、「ABCDEF」と6つのリストがあります。 ユーザーフォーム起動時には、コンボボックスは空欄で コンボボックスから、入力したい商品を選んで、入力ボタンを押して コンボボックスとテキストボックスの内容を入力・コンボボックスを 空欄に戻しています。 これを、「A」を選んで入力ボタンをおしたら「B」が選ばれる。 「B」を選んで入力ボタンをおしたら「C」が選ばれるといったように コンボボックスに表示されるリストを自動で更新することは できないでしょうか? Select case などを利用して組み立てようとしたのですが、 数時間以上調べても出来ません。 教えていただけると助かります。

  • アクセス コンボボックス値をレポートに反映

    アクセス初心者の為、やりたい事を検索しコードコピー等真似ることで どうにか作っている状態です。 現在あと一歩のところでつまずいてしまったのでお力添え頂けると助かります。 環境:アクセス2003 ------------------------------------------------------------------------------ フォームのコンボボックスで表示された値と一致するレコードを下にあるテキストボックスで表示  ⇒レポートにその値を反映させたい ------------------------------------------------------------------------------ フォーム上: 送付先:「A社」 (コンボボックスで選択) 担当者:「Aさん」 (コンボボックスで選択するとテキストボックスで表示) 現在の状況: フォーム上ではコンボボックスの値、その値と一致するレコードを該当テーブル(T_送付先)から テキストボックスに表示されている。 レポート上でだけ何故か送付先の部分が元テーブル(T_送付先) の送付先ではなく(フォームでは表示されてるのに) 数字が代わりに表示されてます。 担当者のテキストボックスにはフォームと同様に表示されてます。 ------------------------------------------------------------------------------ フォーム上にある送付先のコンボボックスには↓ Private Sub コンボ8_AfterUpdate() ' コントロールの値と一致するレコードを検索する Dim rs As Object Set rs = Me.Recordset.Clone rs.FindFirst "[ID] = " & Str(Nz(Me![コンボ8], 0)) If Not rs.EOF Then Me.Bookmark = rs.Bookmark End Sub ------------------------------------------------------------------------------ フォームの送付先を表示するテキストボックスには↓ =[Forms]![F_送付先]![コンボ8] ------------------------------------------------------------------------------ フォーム上のコンボボックス、コンボ8のプロパティ 値集合ソース: SELECT T_送付先.ID, T_送付先.送付先 FROM T_送付先; 連結列: 1 ------------------------------------------------------------------------------ テーブル(T_送付先)の一列目にID項目がありオートナンバー設定してあります。 その値が表示されてる気がします・・・ 他にもコンボボックスを使用してますが、全部レポートには表示されています。 コントロールの値と一致するレコードを検索するこのコンボボックスだけが 表示されない為コードが影響しているのかな・・と考えられますが お手上げ状態です・・・ どなたかアドバイス頂けると助かります。 よろしくお願いします。

  • コンボボックス

    コンボボックスを入力不可にする時なんですけど、 コンボボックスが配列で50個あるんですけど、 ウィンドウプロパティでStyle 2-ドロップダウンリストとするのは、大変めんどくさいので、プログラムでかいたんですけど、  for i = 0 to 50    combo1(i).style = 2  next i   と書いたら”値の取得のみ可能なプロパティに値を設定することはできません”っていうエラーがでるんですけど、プログラムではどう書いたらいいんですか?

  • Access コンボボックスについて

    フォーム1の中にコンボボックス1、 検索結果用のサブフォームを作りました。 コンボボックス1は日付抽出用で、 プロパティは 値集合タイプ・・・テーブル/クエリ にしてあり、 2005-01  ・  ・  ・ 2005-12 となります。 「すべて」検索したいときには、どのように設定したら 良いのかを教えていただけないでしょうか? よろしくお願いします

  • エクセルマクロについて コンボボックスについて

    コンボボックスについて質問が2つあるのですが、 1.コンボボックスのリストに、シートに記載の値や文字を採用するにつき、 プロパティのRowSourceに、B1:B100 と記述しますが、 ABCと複数シートがありまして、どのシートからコンボボックスを起動しても、AシートのB1~B5を指定したい場合、プロパティのRowSourceはどのような記述をしたらよいのでしょうか? 2.UserFormで入力を制御したいのですが、その中に複数入力項目がありまして、その都度全部入力することはありません。 たとえば、元金、利息、月々返済額と3つある場合で、月々返済額だけ変更して、元金、利息は前の数値をそのままで入力したいとき、どのような工夫(記述)をしたらよいでしょうか? 言い方を変えますと、UserFormを起動したときは、前回入力したそれぞれの数値がUserFormに表示されているようにしたいのです。 ちなみにエクセル2003、OS=XPです。 どうかよろしくお願いします。

  • アクセスのコンボボックスでの〇×表示について。

    担当者フォームがあります。 クエリをもとにした担当者リスト一覧があります。 非連結のフォームがあります。 担当者フォームには担当者コード、担当者名、パスワード等があり、〇×選択で、参照・更新・保守があります。このフォームで新規登録。修正。削除ができるように作成しました。list_TANの中で項目をクリックすると、非連結のフォームにデータが入っていきます。 Private Sub list_TAN_AfterUpdate() Me.担当者コード = Me.list_TAN.Column(0) Me.担当者名 = Me.list_TAN.Column(1) Me.担当者かな = Me.list_TAN.Column(2) Me.パスワード = Me.list_TAN.Column(3) ' Me.参照 = Me.list_TAN.Column(4) If Me.list_TAN.Column(4) = "○" Then Me.参照 = 1 Else Me.参照 = 0 End If If Me.list_TAN.Column(5) = "○" Then Me.更新 = 1 Else Me.更新 = 0 End If If Me.list_TAN.Column(6) = "○" Then Me.保守 = 1 Else Me.保守 = 0 End If Me.cmd_登録.Enabled = False Me.cmd_修正.Enabled = True Me.cmd_削除.Enabled = True Me.cmd_クリア.Enabled = True で、非連結のフォームにはいっていくことはできたのですが、参照・更新・保守については、コンボボックスになっていて、値リストの集合タイプには1;○;0;×と記入してあります。 参照が〇となっていても、非連結に入ってくるのは×になってしまいます。〇→×、×→×。なのでまた入れなおさなきゃいけません。他の情報についてはうまく入っていってくれるのですが、コンボボックスの〇×だけが上手くいきません。どのようにすればきちんと表示できますか??分かる方いましたらご教示ください。宜しくお願い致します。

  • Accessで、コンボボックスから2つの値を返す方法

    Accessで、コンボボックスから2つの値を返すことはできるでしょうか。 たとえば、 名称|CODE1|CODE2 ------------------ いち|11111|AAAAA にい|22222|BBBBB さん|33333|CCCCC というクエリを値集合ソースにしたコンボボックスで、 「いち」の行を選択したら、 CODE1の「11111」をテキストボックスAへ、 CODE2の「AAAAA」をテキストボックスBへ 入れたいのです。 このようなことは可能か不可能か、 もし可能ならどのようにすればいいのか、 教えて頂けないでしょうか。

  • Access コンボボックスをクリアー出来ない

    いつも、お世話になります。 すみません、以前にお教えいただいて、大変ありがたく感謝しております。 その件に関連しての、質問ですが、お教えいただいた内容は下記のようなものです。 >コンボボックス「cbxルート」の更新後処理のドロップダウンリストからイベントプロシージャを選択して、右端のビルドボタンを押して、表示されるVBAウィンドウで下記のように記述します。 >Private Sub cbxルート_AfterUpdate()   Me.cbx起点 = Null   Me.cbx起点.Requery   Me.cbx終点 = Null   Me.cbx終点.Requery >End Sub >これでcbxルートを選択すると、cbx起点、cbx終点 のリストにはそのルートの地名が表示されるようになります。 本当にありがとうございました。この内容は望んでいたものその通りで、非常にうまく動作しています。 ベストアンサーに選択させていただき、一旦は質問を閉じたのですが、 この同じフォームで、別のルートを検索したいときに、コンボボックスの値をクリアしたいのですが、コマンドボタンを配置して、色々やってみましたが、どおしても出来ないのです。 Me.ルート=Null Me.起点=Null Me.終点=Nul でやりますと、4つのboxの値は消えるのですが、 新しい検索で、ルートに別ルートを選択しても、起点と終点には前のルートの値が残ってしまっています。 どのように解決したら、良いか何卒よろしくお願いいたします。