• 締切済み

コンボボックスで選択後重複結果を除く方法について

VBA初心者ですが、苦戦しながら頑張っています。 以下についてご教示いただれば幸いでございます。 シートに以下のような表を準備しています。 (実際はもう少し量があり、定期的にデータを追加していきます。) 123456 ABACAA BCE HB CDF ID D G JE E ユーザーフォームにコンボボックスを3つ用意し、テキストボックスを10個 ほど準備しています。 まず最初に、ケースに応じて最大3個のコンボボックスを使用して、 コンボボックス1~3で列の番号(1~6)を選択します。 (ケースによっては、コンボボックスへの入力が1または2個の場合もございます。) その結果、テキストボックスに1~6に応じた結果(A~J)を表示させたいのです。 ここで、コンボボックスに入力した条件の結果表示の際、重複分を省く表示は可能でしょうか。 たとえば3つのコンボボックスを使用して、1と2と5を選択した場合、 テキストボックス上に、重複したアルファベットは表示しないようにしたい (結果として、ABCDEHIJをテキストボックス1~8に表示したい) のですが、どのようなコードの記述をすれば良いかわからず苦戦しております。 これまで、エクセル上、数式を組んでなんとかしのいでおりましたが、 かなりファイルが重くなって、メンテナンスも大変になったので、 VBAで対応できればと考えております。 ご教示くださいますよう何卒よろしくお願いいたします。

みんなの回答

回答No.1

こんにちは コンボボックスで選択する列が確定したら、 空の変数を用意して、選択した列の文字列をINSTRで順番に評価する考え方とか。 コーディング記述例 コンボボックスで列1,2,5が確定 変数sText=""で初期化 if instr(sText,選択列の文字) = 0 then sText = sText & 選択列の文字 end if 上記を選択した列のデータで繰り返し。 これで重複した文字を排除。 テキストボックスへの表示 For iCnt=1 to Len(sText) Select Case iCnt Case 1 TextBox1.Value = Mid(sText,iCnt,1) Case 2 TextBox2.Value = Mid(sText,iCnt,1) Case 3 TextBox3.Value = Mid(sText,iCnt,1) Case 4 TextBox4.Value = Mid(sText,iCnt,1) TextBoxの数だけCase文を用意 End Select Next iCnt こんな感じでどうですかね? あとは、適宜、応用ですね。

GORIRA87
質問者

お礼

junonboys2077様 ご回答ありがとうございます。 当方、VBAが全く初心者なものでして、「上記を選択した列のデータで繰り返し。 これで重複した文字を排除。」の部分等について、具体的にどのように記載すれば良いか分からず苦戦しております。もしよろしければ、そちらについても参考例として教えていただければ幸いでございます。 これから自己研鑽を積んでレベルアップをしていきたいと思いますので、どうぞよろしくお願いいたします、

関連するQ&A

  • ユーザーフォーム上にあるコンボボックスの重複選択をできなくするには?

    ユーザーフォーム上に10個のコンボボックスがあり それぞれ名前をcb1からcb10とします。 これらのコンボボックスには同じリストを取得して 表示していますが、選択するときには重複させないように したいと思っています。 例を挙げると、 リストの値が”東京”、”大阪”、”名古屋”として、 cb1で”東京”を選択している場合は、残りのcb2~cb10では ”東京”を選択できないように、もしくは選択したときに ”すでに選択済みです”みたいなメッセージを表示させて キャンセル状態に戻す、みたいにしたいのですが スマートな書き方がわかりません。 ※力業でそれぞれのコンボボックスのチェンジイベントで 他のコンボボックスの値を見に行って、重複があれば メッセージを表示させるという方法ならわかるのですが 実際のコンボボックスの数が50近くあるためできれば 避けたいと思っています。 達人の皆様、どうぞ宜しくお願いします。

  • コンボボックスの自動更新について

    コンボボックスの自動更新について エクセルのVBAで、ユーザーフォームを使用しています。 ユーザーフォームの中には「入力」ボタンとコンボボックスと テキストボックスがあります。 コンボボックスは、「ABCDEF」と6つのリストがあります。 ユーザーフォーム起動時には、コンボボックスは空欄で コンボボックスから、入力したい商品を選んで、入力ボタンを押して コンボボックスとテキストボックスの内容を入力・コンボボックスを 空欄に戻しています。 これを、「A」を選んで入力ボタンをおしたら「B」が選ばれる。 「B」を選んで入力ボタンをおしたら「C」が選ばれるといったように コンボボックスに表示されるリストを自動で更新することは できないでしょうか? Select case などを利用して組み立てようとしたのですが、 数時間以上調べても出来ません。 教えていただけると助かります。

  • VBAコンボボックスのリスト選択について

    現在、ユーザーフォームを作成していますがコンボボックスでのリスト選択について質問します。 【質問内容】 コンボボックスを3つ作成し、Select Caseでそれぞれのリストを連動させるプログラムを組んでいます。 (1)3つとも選択した後で例えばリスト1を変更しようとするとエラーになってしまいます。リスト以外の文字列も入力できるようにしているつもりですがなぜでしょうか? (2)選択後、シートセルに転送した後、テキストボックスならば「.Text = ""」で一旦空白になりますが、コンボボックスの場合どうしたらよいのでしょうか? シートセルに転送後も選択した内容が残ってしまい結局(1)の事象に基づきエラーになってしまい連続入力ができません。 初歩的な質問で恐縮ですが、よろしくお願いいたします。

  • コンボボックス 選択後のカーソル制御

    ACCESS2007のデータベースを利用しています。 テキストボックス1、コンボボックス1、テキストボックス2が上から順に並んでおり、コンボボックス1で表示されるリストから一つを選ぶと、カーソルがテキストボックス2に遷移します。 (ACCESS2007のオプションの詳細設定のところで、フィールド移動時の動作をフィールドの先頭に移動)に設定しています。 コンボボックス1の選択後、コンボボックス1の先頭にカーソル移動するには、どのような処理をVBAに追加すればよいでしょうか? Private Sub コンボボックス1_AfterUpdate() テキストボックス1.SetFocus コンボボックス1.SetFocus With Me!コンボボックス1 .SelStart = 0 .SelLength = 0 End With End Sub ではうまく動作しませんでした。どうぞ宜しくお願い致します。

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

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

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

    コンボボックスで入力する場合、前ZEROで表示された選択画面を選んだ場合に結果が前ZEROのZEROがなくなってしまうものをZEROがつた形にしたいができません。 コンボボックスの書式は000にしましたが同じでした、テーブルもテキスト形式で前ZEROがついた形です。 宜しくお願い致します。

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

    皆様、こんにちは。 エクセルで幾つかのコンボボックスの値を足算したいですが、やり方がわかりません。 具体的に申し上げますと、 1.0から200まで選べられるコンボボックスを用意しました。 2.これらの選択された値を合計した結果を出したいです。 ご存知の方いらっしゃいましたら、教えて頂きたいです。やはり、VBAを使わなければだめでしょうか。。 どうぞよろしくお願いいたします。

  • コンボボックスからテキストボックスに連続して値を出したい

    エクセルVBAのユーザーフォームで、コンボボックスで選択したものをコマンドボタンを押すことで、同じフォーム上のテキストボックスに表示するところまではできたのですが、同じテキストボックスに追記する形でコンボボックスで選択したものを表示したいのですが、可能でしょうか。テキストボックスは複数行表示できるようにプロパティのMultiLineはTlueに設定することはしたのですが、2回目以降コンボボックスで選択した後コマンドボタンを押してもそのまま上書きするようなコードしかわかりません。 テキストボックスに、20回目まで選択項目を追加表示し、最後にはエクセルのシートにそのデータをコピーしたいのです。果たして、そのようなことは可能でしょうか。可能であればどのように記述すればよいのでしょうか。ぜひ諸先輩方のお知恵をお貸しください。よろしくお願いします。

  • Access テキストボックスとコンボボックス

    Access初心者で、勉強がてらデータ登録フォームを作成しています。 フォーム上にコンボボックスを設置し、 テーブルに保存されているデータを検索できるようにしたのち、 テキストボックスのコントロールソースには簡単に 「=[コンボボックス].[column](2)」としています。(それぞれの名前は仮称です) 後から、テキストボックスひとつで 「コンボボックスからの検索結果を表示させる」と 「テキスト入力も可能とする」 を共存させたいと思い始めたのですが、可能になりますでしょうか。 ただし「コンボボックスからの検索結果表示」をしたテキストボックスに対し、 その情報をフォーム上で書き換えたとしても、テーブル側のデータ書き換えは行いたくありません。 よろしくお願いいたします。

  • テキストボックスとコンボボックス

    こんにちは、Accessのフォームにテキストボックスとコンボボックスを設置して、以下のような事ができないかと悩んでおります。 フォーム内には、テキストボックスとコンボボックスが設置してありまして、コンボボックス内にDB(会社名テーブル)から取得した全ての会社名が入っています。 しかし、そのレコード数が300件近くあるため、コンボボックス内から探し出すのに手間が掛かります。 そこで、コンボボックスの隣にテキストボックスを設置し、テキストボックス更新後に会社名テーブルの検索を行い、条件に合った会社名だけをコンボボックス内に入れることを考えているのですが、上手く行きません。 動作のイメージとしては下記のようになります。 (1)初期表示時はテキストボックス内に何も入力されていないので、全レコードがコンボボックス内に表示される。 (2)テキストボックスに「有限」と入力して、テキストボックスからフォーカスを移動させると、コンボボックス内に「有限」が会社名に含まれているレコードのみが入っている。 (3)テキストボックスを空白に戻すと、コンボボックス内には全レコードが表示 以上、どなたかご教授よろしくお願いします。

専門家に質問してみよう