コンボボックス活用法 | 商品名とコードの置き換え方法

このQ&Aのポイント
  • コンボボックスを使用して、サーバーの巨大データベースから商品名を選択すると、商品コードに置き換わる方法を探しています。ユーザーフォームのコンボボックスを利用して操作しやすくすることが目標です。
  • テーブルを商品名とコードの組み合わせにして切り出す方法も考えましたが、桁数や英字の有無などが複雑で処理が難しくなります。また、将来的には商品名に区切り記号が採用される可能性も考慮しなければなりません。
  • 現在の状況では、コンボボックスから値を取得すると商品名が返ってしまい、商品コードが取得できません。解決策を探しています。
回答を見る
  • ベストアンサー

コンボボックス活用法

 サーバーの巨大データベースから、必要なデータを持ってきて、エクセルの表に編集するマクロをVBAで組んでいます。  ただ、元のデータベース内では、商品が名前でなくコードで格納されています。 マクロは不特定多数のオペレーターに使ってもらうことを前提としていますので、操作し易いようにエクセル内にA列に商品名、B列に商品コードといったテーブルを作って置き、ユーザーフォームのコンボボックスで、商品名を選ぶと商品コードに置き換わるようにしたくて、色々と調べました。  いろいろこねくり回して、結果的に、見かけ上は商品名を選択するとコードに置き換わる様に出来たのですが、コンボボックスのオブジェクトから値を取得すると、結局は商品名が返ってしまい、行き詰まってしまいました。  テーブルを最初から商品名&”区切り文字”&商品コードにして、なんとか後ろから切り出す方法も考えましたが、商品コードも新旧入り混じっているので、桁数も不定ですし、英字混じりのものもあり、切り出しの判定がかなり複雑になってしまいます。 また、将来的に商品名に区切り記号と同じモノが採用さる可能性は無視出来るほど小さくありません。  ここまで出来るんだから、もう一押しで出来そうな気もします。 ちなみに、OSは98SE、エクセルは97 SR-2です。 何か良い方法をご存知の方があれば、お知恵を拝借したいと思います。

  • psss
  • お礼率86% (38/44)

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

  • ベストアンサー
  • nishi6
  • ベストアンサー率67% (869/1280)
回答No.1

Sheet1のA1、B1に表題『商品名』、『商品コード』があり、A2からB11にデータが入力されているとします。 ユーザーフォーム上のコンボボックスのプロパティを (1)RowSourceを A2:B11 ・・・コンボボックスのリスト (2)ColumnHeadsを True ・・・列見出しを表示 (3)ColumnCountを 2 ・・・・・2つの列を表示 (4)TextColumnを 2 ・・・・・コンボボックスのエディットボックスに2列目を表示 (5)ControlSourceを D2 ・・・セルD2に出力する場合 (6)BoundColumnを 2 ・・・・・セルD2には2列目を出力 (7)ColumnWidth ・・・・・・『60;60』とか、見やすい様に設定 上記の設定くらいで、コードは何も書かずに商品名に対応するコードが取得できると思いますが??? 『商品名』、『商品コード』のテーブルが完成している前提ですが・・・ 新商品が増えようが何ら関係ないような・・・商品名でソートくらいは必要かもしれませんが・・・ 私の誤解釈かもしれません。(当方、Excel97です)

psss
質問者

お礼

>(1)RowSourceを A2:B11 ・・・コンボボックスのリスト  の部分だけは、頻繁に追加の可能性があるので、 BCSIZE = Range("A1").End(xlDown).Row CombBox1.RowSource = "商品情報!A2:B" & BCSIZE  と云うマクロで取得するようにしたところ、理想通りに機能しました。 本当にありがとうございました。

関連するQ&A

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

    初心者です。 コンボボックスの使い方について教えて下さい。 商品テーブルA 商品名|コードA|コードB|コードC| マスターテーブル A|B|商品名|コードA|コードB|コードC|D|E のような2つのテーブルを作成し、マスターテーブルの「商品名」に コンボボックスで商品テーブルAの商品名を表示させるとします。 そこでコンボボックスで商品名を選択すると同時に 商品テーブルAからほかの「コードA」「コードB」「コードC」の値を マスターテーブルの「コードA」「コードB」「コードC」に入れる方法は ありますでしょうか? また、他の方法はありますでしょうか? 宜しくお願い致します。

  • コンボボックスの活用

    EXCELで会計処理をしようと思ってます。 シート「勘定科目」の一行目に、A列には消耗品費、B列は通信費…と勘定科目定義が並んでおり、二行目以降には、各勘定科目の品名のリスト、つまりA列には消耗品費として分類されている品名である「鉛筆」「ホッチキス」「定規」などの項目が並んでいます。 例   A    B    C    D   1 消耗品費 通信費  備品費  車両関係費 2 定規   電話料  椅子   高速道路通行料 3 鉛筆   手数料  ・    ・ 4 消しゴム 切手   ・    ・ 5 ・    ・ となっています ユーザーフォームに、コンボボックスを作って、コンボボックスから、「消耗品費」などの勘定科目定義を選択すると、隣のコンボボックスに選んだ定義の中の「品名」のリストが表示されて、そこから品名を選択できるようなマクロを組むとどうなるのでしょうか? 選んだ「勘定科目定義」と「品物」名は別のシート(出力)に書き込むように します

  • Excelマクロのコンボボックスに関して

    マクロを初めて扱います。 どなたか詳しい方、ご教授ください。 Excelのシート上にActiveXのコンボボックスを作成しました。 このコンボボックスに同じブックの別シートのA列のX行目からY行目までを格納したいと考えております。 どうかコードの書き方をお教えいただけませんでしょうか?

  • コンボボックスの2列目の値を表示させる方法はありま

    アクセス2003です。 コンボボックスの2列目の値を表示させる方法はありますか? テーブル1には ID 会社名 1 山田建設 2 田中株式会社 といれ、 テーブル1をレコードソースとするフォームを作り、コンボボックスを設置し そのコンボボックスのプロパティは 値集合タイプ:テーブル/クエリ 値集合ソース:テーブル1 列数:2 にしました。 この場合、コンボボックスで値を選択した後は、一番左側の数字がコンボボックスに入力されますが 左から2列目の値を表示させる方法はありますか? IDと会社名のフィールドを順番を変えることなく、IDが左、会社名が右にしたいです。 エクセルで例えると http://www.moug.net/tech/exvba/0090021.html と同じようなことをアクセスで行いたいです。 プロパティではなくエクセルのようにVBAで配列を使うしかないのでしょうか?(コードもわかりませんが) よろしくお願い致します。

  • Excelマクロのコンボボックスについて

    初めてマクロを扱います。 マクロに詳しい方、コードをご教授ください。 Excelマクロを使い下記の機能をシートに盛り込みたいと考えております。 【実現したいこと】 ・シート上にコンボボックスを作成し、コンボボックスで選択した項目で絞り込めるようにする。 ・コンボボックスに格納される項目は、A列の重複を除外し、昇順で並べ替えたもの。 ・またコンボボックスに格納する項目は日々レコード追加されるため、コンボボックスの中身にも随時反映するようにしたい。 ・コンボボックスには「全て表示」というアイテムを追加し、「全て表示」を選択すると、フィルターが解除される。 わかりにくいかもしれませんが上記のことを実現したいと考えております。 どうかお知恵をお貸しください!! よろしくお願いします!!

  • Accessのデータベースのコンボボックスの記載

    AccessのVBAのコンボボックスのデータベースのレコードの非表示の仕方と表示する値と取得する値を変える方法が知りたいです。 例えばSQL分でテーブルの中の商品コードカラムと商品名カラムを抽出し、値をコンボボックスに入れるとします。この時商品コードの方は値だけ持たせて非表示にし、商品名だけが表示されるようにしたいです。 そして表面上で商品名が選ばれた時、非表示の商品コードの値の方が選択されるようにしたいのですがどうコーディングしたらいいのかわからないです。 ネットでも調べてみましたがフォームで設定する方法しか見つけられませんでした。VBAで記載するようにとの指定があるのでVBAで記載するようにしたいです。 VBAではどのように書いたらいいのでしょうか

  • Access コンボボックスを使って抽出

    Access2000・Windows2000を使用しています。 レコードの抽出をしたいと思います。テーブルは1つ、フィールドには日付・商品名・業者名・単価・・・とあります。フォームで「商品名から抽出(コンボボックスから商品を1つ選ぶ)」または「業者名から抽出(コンボボックスから業者を1つ選ぶ)」(コンボボックスから商品を1つ選ぶ)出来るようにし、なおかつ今月のレコードのみ表示させたいのですが、まずそのテーブルを1つ作成した時点でつまづいてしまっています。 どなたかご教授お願いします。

  • Accessコンボボックスについて(初心者)

    例えば以下のような2フィールドのテーブルがあり 商品コード 商品名 1111  パソコン   ・     ・   ・     ・ フォームでひとつのコンボボックスを作る際このテーブルを参照し、2フィールドとも表示され、なおかつ入力出来るようにしたいのですが・・。 表示はするものの入力となると商品コードのフィールドのデータしか入力出来ません。 要は商品コードを入力すれば同じレコードの商品名が入力出来るようになれば良いので、別のやり方があればかまわないのですが・・。 良きアドバイスをお願いします。

  • Access2007でコンボボックスで選択した条件で次のコンボボックスを開きたいのですが?

    Access2007デビューです。教えてください;; 例えば、「得意先テーブル」があって<得意先コード>でつながった「担当者テーブル」があるとします。 そして、「管理表」なるものを作ろうとしています。 1つ目のコンボボックスで [得意先会社名] を選んで、 2つ目のコンボボックスで、選ばれた会社の [担当者名] を選べるようにしたいんです! いい方法を教えてください!!

  • アクセス2007 コンボボックスの複数列の書式設定

    アクセス2007 コンボボックスの複数列の書式設定 列数 3 、列幅 0cm;1.501cm;1cm のコンボボックスです VB側でソースを変えています。 コンボ.RowSource = "SELECT テーブル名.ID, テーブル名.商品, テーブル名.金額  FROM テーブル名 WHERE (~~~~~~ ここで、商品名、金額を「右詰め」、金額を「#,##0」(1,230)としたいのですがフォーマットの記述はどのようにするのでしょうか? お願い致します。

専門家に質問してみよう