- ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:【ExcelVBA】ワークシートからListBoxへ取得)
【ExcelVBA】ワークシートからListBoxへ取得
このQ&Aのポイント
- Excelのsheet1に入力されているリストを、ユーザフォームのListBoxに取得したい。一意に抜き出したリストを別シートにコピーしてリストを解除することで、ListBoxに設定することはできたが、別シートを使わずに処理を済ませたい。
- 【年次|コード|名称】の構成でユニークなリストを取得し、ListBoxに表示したい。AdvancedFilterを使用して一意に抜き出したリストを別シートにコピーし、リストを解除した方法は成功したが、別シートを使用せずに処理を完了したい。
- WindowsXP/Excel2003/VB6の環境で、Excelのsheet1に入力されている【年次|コード|名称】のリストをユーザフォームのListBoxに取得したい。AdvancedFilterを使用して一意に抜き出したリストを別シートにコピーし、リストを解除した方法は成功したが、別シートを使用せずに処理を完了したい。
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
標題が不適当。 >ワークシートからListBoxへ取得 ではなくて、 重複しない行の取得が重点内容のはず。 ーー それとリストボックスへのアイテムへの設定 ーー 一方法を挙げておくが、色々な方法がありそうです。 私は関数の応用で簡潔にできないかとやったが。 リストの2列設定も含め、コントロールのことを勉強してください。 >最近VBAを始めたばかりです、の人には難しすぎるとおもう。 その分、回答丸写しにならざるを得ないだろう。 例データ I列 J列 コード 名称 12-111 aa 13-222 bb 12-111 aa 13-222 bb 15-345 cc 18-435 dd 20-225 ee Sub test01() Dim mylist(2, 20) '2 列 21行の例 UserForm1.ListBox1.ColumnCount = 2 UserForm1.ListBox1.Clear d = Range("I65536").End(xlUp).Row MsgBox d k = 0 For i = 2 To d If Application.WorksheetFunction.CountIf(Range("I2:I" & i), Cells(i, "I")) = 1 Then mylist(0, k) = Cells(i, "I") mylist(1, k) = Cells(i, "J") k = k + 1 End If Next i '--- UserForm1.ListBox1.Column() = mylist UserForm1.Show End Sub
お礼
早い回答ありがとうございました。 >標題が不適当。 >>ワークシートからListBoxへ取得 >ではなくて、 >重複しない行の取得が重点内容のはず。 ご指摘ありがとうございます。次に質問させていただく際には、一目で疑問内容が分かるよう表題に気をつけさせていただきます。 >最近VBAを始めたばかりです、の人には難しすぎるとおもう。 やはり、処理としては難しい部類に入るのでしょうか・・・。 >リストの2列設定も含め、コントロールのことを勉強してください。 ご指摘ありがとうございます。コントロールは知らない事が多々あるため、重点的に勉強していこうと思います。 それと、上記内容はシート側に記述するものであってますか? 質問に明記するのを忘れていましたが、実際はユーザフォーム側で処理を行うことになります。 上記回答を元に自分でいじってみるつもりですが・・・。 また、重ねての質問になるのですが、リストに設定したアイテムを選択してユーザフォームのボタンを押下した場合、別シートにある表の最終行へ追加させる事って可能なのでしょうか?