こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

コンボボックス活用法

 サーバーの巨大データベースから、必要なデータを持ってきて、エクセルの表に編集するマクロをVBAで組んでいます。
 ただ、元のデータベース内では、商品が名前でなくコードで格納されています。
マクロは不特定多数のオペレーターに使ってもらうことを前提としていますので、操作し易いようにエクセル内にA列に商品名、B列に商品コードといったテーブルを作って置き、ユーザーフォームのコンボボックスで、商品名を選ぶと商品コードに置き換わるようにしたくて、色々と調べました。
 いろいろこねくり回して、結果的に、見かけ上は商品名を選択するとコードに置き換わる様に出来たのですが、コンボボックスのオブジェクトから値を取得すると、結局は商品名が返ってしまい、行き詰まってしまいました。

 テーブルを最初から商品名&”区切り文字”&商品コードにして、なんとか後ろから切り出す方法も考えましたが、商品コードも新旧入り混じっているので、桁数も不定ですし、英字混じりのものもあり、切り出しの判定がかなり複雑になってしまいます。
また、将来的に商品名に区切り記号と同じモノが採用さる可能性は無視出来るほど小さくありません。
 ここまで出来るんだから、もう一押しで出来そうな気もします。
ちなみに、OSは98SE、エクセルは97 SR-2です。

何か良い方法をご存知の方があれば、お知恵を拝借したいと思います。

投稿日時 - 2002-04-17 15:40:20

QNo.254473

困ってます

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

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です)

投稿日時 - 2002-04-17 16:47:57

お礼

>(1)RowSourceを A2:B11 ・・・コンボボックスのリスト

 の部分だけは、頻繁に追加の可能性があるので、

BCSIZE = Range("A1").End(xlDown).Row
CombBox1.RowSource = "商品情報!A2:B" & BCSIZE

 と云うマクロで取得するようにしたところ、理想通りに機能しました。
本当にありがとうございました。

投稿日時 - 2002-04-17 17:23:15

ANo.1

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(1)

あなたにオススメの質問