• 締切済み

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

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