• 締切済み

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

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が自動で入力される)ようにしたいのですが、こんなことできるのでしょうか? 

  • Kase1
  • お礼率73% (11/15)

みんなの回答

  • 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

  • 【Access】コンボボックスの値の変更方法

    フォームにコンボボックスを配置し、下記の動作をさせたいと思ったのですが、1は出来たものの2が出来ませんでした(値集合ソースの中身は表示されるものの、選択してもコンボボックスに反映されませんでした)。 1. フォームオープン・・・データベースのcmb1の値より、対応する文字をコンボボックスに表示する。 2. コンボボックスの値の変更・・・プルダウンから値集合ソースに表示されている任意の値を選択し、コンボボックスに設定する。 その為、どうすれば値を変更できるようになるかアドバイスいただける方がいらっしゃいましたら、ご教示の程よろしくお願いします。 なお、初期状態から下記を変更しております。 【テーブル】 テーブル名:tbl フィールド名:ID,cmb1 値:1,2 【フォーム】 フォーム名:form1(コンボボックスを一つ配置) フォームのレコードソース:SELECT Choose(tbl.cmb1,"A","B","C") AS nm_cmb FROM tbl WHERE (((tbl.ID)=1)); コンボボックス 列数:2 列幅:0cm;3cm コントロールソース:nm_cmb 値集合タイプ:値リスト 値集合ソース:1;A;2;B;3;C 連結列:2 上記の状態で起動時のコンボボックスの中身は"B"と表示されるものの、コンボボックスのプルダウンメニューを表示して値を変更しようとしても出来ない事が確認できると思います。 以上、よろしくお願いします。

  • コンボボックスの値が消えてしまいます。

    コンボボックスの値が消えてしまいます。 フォーム(1)にコンボボックスA(値集合ソースはテーブル1)があります、この リスト外入力時で別フォーム(2)(レコード追加用)を開きテーブル1にレコードを追加、 フォーム(2)を閉じる時にコンボボックスAをリクエリかけてフォーム(1)に戻るとコンボボックスAが空になっているのでリストを開き選択し直さなければいけません! フォーム(1)に戻った時コンボボックスAに入力した値を選択させておくにはどの様にすれば良いか アドバイスよろしくお願いいたします。 WIN XP ACCESS 2003で作成しています。

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

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

  • コンボボックス

    コンボボックスにデータベースの値セットしたいですが、 具体的なやり方がわかりません。 VS.Net2003 データはデータセットに設定しているのですが OleDbDataAdapter1.Fill(DsBurando1) cmb1.databind()やると コンボボックスの中身は一件目のデータしかなくて、 しかも立て表示しているのですが・・・ どんな設定が必要でしょうか。 よろしくおねがいします。

  • コンボボックスからコンボへ

    私はホームページを黙過、勉強中のものです。 いま、ホームページ上に上下の所にコンボボックスを設置し、コンボボックスから選択肢を選ぶと下のコンボボックスが上のコンボボックスの選択肢によって選択する値を変える仕組みを作っています。 ほぼ完成しました。ただ一つだけ問題解決できません。それは選択をしてもらい画面が切り替わった時に入力ミスをしてしまった人は前の画面に戻ります。その時に上と下のコンボボックスのうち下のコンボボックスに入れてもらった値が消えてしまう事です。更に下のコンボボックスを選択しようとすると値が全て消えてしまっているので選択できません。もう一度上のコンボに値を入れ直すとまた下のコンボも値をかえすのですが、それでは入力者にだいぶ手間をかけてしまう事になります。 どうか教えて頂けないでしょうか。 この仕組みはすべてジャバで作りました。 お願します。

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

    ACCESSでコンボボックスを使っているときに たまに入力できなくなってしまう時があり困っています。 例えばA,B,Cという3つのデータを選択できるコンボボックスがあり、 現在、Aが選択されていてBに変更しようとした時に コンボボックスの表示部分が突然空欄(または選択されているのに表示されていない)になってしまいます。 その後、どれを選択してもコンボボックスには何も表示されなくなってしまいます。 この現象が起こるとなぜか同じフォーム内のボタンなどにも不都合が起こるようになってしまいます。 (テキストボックスのデータを削除するボタンがあるのですがおしてもなにも起こらなくなってしまいました) いろいろ試しているのですが全く原因がわかりません。 どのようなところに原因がありそうかなどあれば教えてください。 宜しくお願いします。

  • コンボボックスを選択したい

    VB2008で開発しています。 Me.cmb1.DataSource = tableData1 Me.cmb1.DisplayMember = "名前" Me.cmb1.ValueMember = "ID" としてコンボボックスにテーブルデータを セットしました。 IDが"2"のデータを選択状態にしたいのですが どうしたらよいでしょうか。

  • アクセスでコンボボックスに表示されるリストの順番が狂ってしまう!

    アクセスでコンボボックスに表示されるリストの順番が狂ってしまう! アクセスのフォームでコンボボックスを使用しています。コンボボックスで表示されるデータは他のテーブルの値を表示させているんですが、その値が勝手に昇順?に並べ替えられてしまい困っています。テーブル作成時に入力した順番か、もしくは任意に表示させる方法はないでしょうか? ちなみにアクセス2000です。どうぞよろしくお願いいたします。

  • プルダウン形式リストボックス(コンボボックス)の値を変更したい

    こんにちは! 教えて下さい。 チェックボックスとコンボボックスがあります。 コンボボックスの一つ目の値は(any)、二つ目以降はDATAです。 デフォルトでは、「チェック無し、コンボボックスの値(any)、コンボボックスは使用不可」にしています。 チェックボックスをチェックするとコンボボックスを使用出来、コンボボックスの値をあるDATAにしたとします。 ここで問題なのですが、この地点でチェックボックスを外した時、コンボボックス の値を(any)と表示させたいのです。(コンボボックスも使用不可) コンボボックスの表示されている値を任意に変えれるのでしょうか? 初心者なもので、すごく簡単な質問だったらお許し下さい。

  • コンボボックス dataコントロール

    .net 2003でプログラムを作成中です。 コンボボックスのdataコントロール内に 「3;2;1;5;4」と入力して実験してみたところ コンボボックスには 1 2 3 4 5 となっていました。 これが自動的に昇順に並び替えられてしまうのは仕様なのでしょうか? コントロール内に入力したとおりにしたい場合はどうすればよいのでしょうか? ご教授の程よろしくお願いいたします。

専門家に質問してみよう