※ ChatGPTを利用し、要約された質問です(原文:コンボボックス活用法)
コンボボックス活用法 | 商品名とコードの置き換え方法
このQ&Aのポイント
コンボボックスを使用して、サーバーの巨大データベースから商品名を選択すると、商品コードに置き換わる方法を探しています。ユーザーフォームのコンボボックスを利用して操作しやすくすることが目標です。
テーブルを商品名とコードの組み合わせにして切り出す方法も考えましたが、桁数や英字の有無などが複雑で処理が難しくなります。また、将来的には商品名に区切り記号が採用される可能性も考慮しなければなりません。
現在の状況では、コンボボックスから値を取得すると商品名が返ってしまい、商品コードが取得できません。解決策を探しています。
サーバーの巨大データベースから、必要なデータを持ってきて、エクセルの表に編集するマクロをVBAで組んでいます。
ただ、元のデータベース内では、商品が名前でなくコードで格納されています。
マクロは不特定多数のオペレーターに使ってもらうことを前提としていますので、操作し易いようにエクセル内にA列に商品名、B列に商品コードといったテーブルを作って置き、ユーザーフォームのコンボボックスで、商品名を選ぶと商品コードに置き換わるようにしたくて、色々と調べました。
いろいろこねくり回して、結果的に、見かけ上は商品名を選択するとコードに置き換わる様に出来たのですが、コンボボックスのオブジェクトから値を取得すると、結局は商品名が返ってしまい、行き詰まってしまいました。
テーブルを最初から商品名&”区切り文字”&商品コードにして、なんとか後ろから切り出す方法も考えましたが、商品コードも新旧入り混じっているので、桁数も不定ですし、英字混じりのものもあり、切り出しの判定がかなり複雑になってしまいます。
また、将来的に商品名に区切り記号と同じモノが採用さる可能性は無視出来るほど小さくありません。
ここまで出来るんだから、もう一押しで出来そうな気もします。
ちなみに、OSは98SE、エクセルは97 SR-2です。
何か良い方法をご存知の方があれば、お知恵を拝借したいと思います。
お礼
>(1)RowSourceを A2:B11 ・・・コンボボックスのリスト の部分だけは、頻繁に追加の可能性があるので、 BCSIZE = Range("A1").End(xlDown).Row CombBox1.RowSource = "商品情報!A2:B" & BCSIZE と云うマクロで取得するようにしたところ、理想通りに機能しました。 本当にありがとうございました。