• 締切済み

リストボックスの値をコンボボックスでコントロール

Access 2007をつかってデータの整理を早急にしなければならなくなり、簡単なAccessデータベースを作ってデータ入力をやっています。データの特性上もっと簡単に入力ができるはずなのですが、勉強不足でできません。ご教授ください。 テーブル(tbl) にフィールドF1とF2があります。これを元にフォームFrmを作りました。Frmにコンボボックス(Cmb)とリストボックス(Lst)があります。Cmb の値はc1, c2, c3がありF1に入力されます。Lst の値はl1, l2, l3がありF2に入力されます。Cmbでc1かc2を選んだときは、Lst のl1かl2が選択される可能性がありますが、Cmbでc3を選んだときにはl3しか選択肢はありません。ここで入力の手間を省くためc3を選択したときにl3が自動で選択される(F2にl3が自動で入力される)ようにしたいのですが、こんなことできるのでしょうか? 

みんなの回答

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

No.1,2です。 > エラーメッセージは次のようです。 このメッセージからすると、ひょっとしてOSかAccessが日本語版以外 だったりしないでしょうか。 (Mac版の(日本語版)Accessは、詳細不明) 推測の根拠にしたURL: http://accessclub.jp/bbs/0116/beginers39884.html だとすると、せっかくエラーメッセージを書き出してもらっておきながら 大変申し訳ないのですが、こちらで検証できる環境がありません(汗) (・・・日本語版で英語メッセージなのだとすると、それもまた、ちょっと  思い当たる対策がないのですが(汗)) ですので、上記サイトでTWESTさんなどが紹介されている下記サイト 等の対応(Accessのバージョンが違いますがOS関連の操作なので 同様かと)をとってみる、程度しか、対応策を挙げられません。 http://support.microsoft.com/kb/815467/JA/ お急ぎの案件だというのに、引っ張った挙句、役に立つ回答ができず すみません(汗)

Kase1
質問者

お礼

DexMachinaさんいろいろ教えていただいてありがとうございました。

Kase1
質問者

補足

英語版のWidows7と英語版のOffice 2007を使っています。日本語が使えるようにした時点で、いろんなところに不都合が出てきます。英語版Accessは特に日本語対応PCでは使いにくいソフトです。もうしばらくやってみて、駄目なら、Listからの情報(l3)を空白状態にしておいて、データを最後にソートしてから一気に入力するようにします。あと約1000件ぐらいなので、何とかできると思います。

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

No.1です。 補足とお礼の投稿日時をOkWave経由で確認しましたが、 順序から考えて、エラーについて自己解決できたということで よろしいでしょうか? もし未解決のようでしたら、エラーメッセージの内容をお報せ 下さい。 (さすがにその情報がないと、原因の推測が難しすぎます(汗)) ★画像添付する場合は、メッセージボックスのみを切り出して  下さい(PC画面の全体だと、文字が潰れて読めなくなるので)  (・・・お礼/補足には画像添付の機能はなかったかも(汗)) 一応、Access2007から、セキュリティ絡みで設定の変更が あったことから、その関連も疑いましたが、この場合はエラー メッセージすら出なかった気がしますし・・・。 一応、参考になるかもわかりませんが(汗)、以前の質問の URLを添付しておきます: http://okwave.jp/qa/q5264187.html (No.3の回答の「II)マクロが有効になっているかを確認して  ください。」以降、及びその添付画像) 併せて、Microsoftの関連する内容についても: http://office.microsoft.com/ja-jp/access-help/HA001230190.aspx?CTT=1

Kase1
質問者

補足

エラーメッセージは次のようです。 The expression After Update you entered as the event property setting produced the following error: A problem occurred while Microsoft Office Access was communication with the OLE server or ActiveX Control. *The expression may not result in the name of a macro, the name of a user-defined function, or [Event Procedure] * There may have been an error evaluating the function, event, or macro. This error occurs when an event has failed to run because Microsoft Office Access cannot evaluate the location of the logic for the event. For example, if the OnOpen property of a form is set to =[Field], this error occurs because Access expects a macro or event name to run when the event is fired. 次が実際のコードです。(Cmb、Lst, c3, l3は置き換えています。実際のc3とl3は実は同じ文章です。) Private Sub Cmb_AfterUpdate() If Cmb = "c3" Then Lst = "l3" Else Lst = Null End If End Sub マクロは有効になっています。 If ・・・Then・・・Elseステートメントの仕組みはわかりやすいと思っているのですが、何にひっかかているのか、わかりません。

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

VBAまたはマクロを使用すれば可能です。 FrmフォームのデザインビューでCmbコンボボックスをダブルクリックするなどして そのプロパティシートを開き、『イベント』タブの『更新後処理』を選択します。 すると、右端に『...』(ビルダ)ボタンが表示されますので、そこをクリックして 『ビルダの選択』ダイアログを開き、マクロの場合は「マクロ ビルダ」を、VBAの 場合は『コード ビルダ』を選択してください。 その後、以下の操作を行います: ※一旦「c3」を選択した後、c1・c2を指定したり値を削除したりした場合は、   Lstリストボックスを空白に戻す(=l3の選択を解除する)形としています。 【マクロの場合】 1)マクロのデザインビューが開くので、『デザイン』リボンの『表示/非表示』  グループ(?)の『すべてのアクションを表示』ボタンをオン(→オレンジ色の  グラデーションになっている状態)に設定 2)『アクション』列の1行目に「値の代入」を指定してEnterキーを押す 3)左下に『アイテム』欄と『式』欄が表示されるので、それぞれ以下の式を  入力  『アイテム』: [Lst]  『式』:    IIF([Cmb]="c3", "l3", Null)  (c3やl3が実際には数値の場合は、「"」での括りは不要) 4)『デザイン』リボンの『閉じる』グループの『閉じる』ボタンをクリックすると、  「マクロに対して行った変更を保存して、プロパティを更新しますか?」の  メッセージが表示されるので、『はい(Y)』を選択 5)『更新後処理』プロパティに「[埋め込みマクロ]」と表示されていることを  確認 6)Frmフォームを保存 【VBAの場合】 1)Visual Basic Editor(VBE)が開き、「Private Sub Cmb_AfterUpdate()」  と「End Sub」のコードが表示されていることを確認 2)上記の2つのコード間の行に、以下のコードを追記   If Cmd = "c3" Then     Lst = "l3"   Else     Lst = Null   End If 3)VBEを閉じる 4)『更新後処理』プロパティに「[イベント プロシージャ]」と表示されている  ことを確認 5)Frmフォームを保存 ・・・以上です。

Kase1
質問者

お礼

早速のご教授ありがとうございます。仕組みは理解しました。

Kase1
質問者

補足

いろいろ試していますが、マクロ、VBAどちらに対しても、なぜかエラーが出ます。c3を選択してもl3は選択されません。また、c1、c2を選択しても同じエラーメッセージが出てしまいます。???

関連するQ&A