• ベストアンサー

ACCESSのリストボックスの値を固定したいのですが。

ACCESSのリストボックスの値を固定したいのですが。 フォームをつくり、リストボックスで、担当者を入れるようにしました。 データを更新する度に、担当者を選ばなければいけません。 最初に選んだ担当者を、その後も表示させるにはどうすればいいのでしょうか? 既定値に、担当者を入れる以外に方法はあるでしょうか?

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

  • ベストアンサー
  • DexMachina
  • ベストアンサー率73% (1287/1744)
回答No.3

> 既定値に、担当者を入れる以外に方法はあるでしょうか? 『予め、テーブル/フォームのデザインビューで既定値を設定』では なく、『フォームでの入力時に、その値を既定値に設定』という 方法もありますが、それではいかがでしょうか。 1)当該フォームをデザインビューで開く 2)当該リストボックスをダブルクリックするなどして、同リストボックス  のプロパティシートを開く 3)『イベント』タブの『更新後処理』にカーソルを移動すると、右端  に『...』(ビルダ)ボタンが表示されるので、それをクリック 4)『ビルダの選択』ダイアログが開くので、マクロで対応するなら  「マクロ ビルダ」を、VBAで対応するなら「コード ビルダ」をダブル  クリック 5-a)マクロの場合は、マクロに以下の一行を追加:  アクション: 値の代入  アイテム: Forms!(フォーム名)!(リストボックス名).DefaultValue  式: Nz(Forms!(フォーム名)!(リストボックス名), "")  ※フォーム名、リストボックス名には、実際の名前を指定します。   (その際、「( )」は無用です。また、入力後は角括弧が自動で   追加されます) 5-b)VBAの場合は、以下のコードを記述: Private Sub リストボックス名_AfterUpdate() 'エラー発生時は「エラー処理」の行に飛ばす On Error Goto エラー処理   'マウスなどで入力した値を、既定値に設定   '(値を削除した場合は、既定値の設定を解除)   リストボックス名.DefaultValue =Nz( リストボックス名, "") 終了処理:   '処理を終了(エラー処理に入るのを避ける)   Exit Sub エラー処理:   'エラー内容をメッセージボックスで表示して処理を中止   MsgBox Err.Number & ":" & Err.Description, , Me.Name & " リストボックス"   Resume 終了処理 End Sub 6)フォーム(及びマクロ)を保存 ・・・以上です。 既定値(DefaultValue)にはNull(空白)を指定できないため、 Nz関数による空文字("":Nullとは別の空白)への変換を 加えています。 (リストボックスではNullの代入は、まずあり得ないと思います  が、テキストボックスやコンボボックスなどに応用した場合の  参考までにということで・・・) なお、念のためですが、『既定値』は、あくまで「新規レコードの 追加時」にのみ適用されます。 「既存レコードの連続編集時」には無効ですので、ご質問の 意図がそのような状況のためのものでしたら、ご容赦下さい。 (この場合は、「前レコードと同じ値に変更するのか、古い値の  ままでいいのか」をAccess側に判断させることはできないので、  プログラムのみでの対処はできないと思います:  「常に上書き」等、一方に決めてよい場合のみ可能、と)

a-z_A-Z
質問者

お礼

ありがとうございます。 内容は、私には難しいですが、詳しい説明のとおりしたら出来ました。 まさに、求めていた答えです。 ありがとうございました。

すると、全ての回答が全文表示されます。

その他の回答 (2)

  • MSZ-010S
  • ベストアンサー率36% (8/22)
回答No.2

データをaddした後に リストボックス名=担当者名 でできます。 テーブルを使用している場合はフィールドを1つ増やし選択された場合に データ(数字など)を変更し 変更した担当者以外は空白にするなどすれば 次にフォームを開いたときに空白でないデータの担当者を選のはどうでしょうか?

a-z_A-Z
質問者

お礼

ありがとうございます。 >リストボックス名=担当者名 でできます。 マクロかなにかを使うのでしょうか?

すると、全ての回答が全文表示されます。
回答No.1

毎回、同じ名前の担当者を入力するのですか? それとも、毎回入力するのがわずらわしいのですか? 同じ名前を入力するのであれば、既定値に入力しておけば良いと思います。 担当者が複数いる場合であればコンボボックスを使い、そこから名前を選択するやり方にすれば簡単です。

a-z_A-Z
質問者

お礼

ありがとうございます。 伝票入力者が担当者と言うのを想定しています。 コンボボックスでも、入力の度に選ぶ必要がありませんか?

すると、全ての回答が全文表示されます。

関連するQ&A