本記事では「シート上にある特定の1件のレコードをリストボックスに表示する」方法を解説していきます。
例えば、「フォーム上に検索用のテキストボックスがあるのなら、そこに入力された値に関連するレコードをリストボックスに表示する」といったときに使えたりします。
ちなみに下の記事の場合、シートにある全てのレコードを表示する方法を紹介しています。
【VBA】フォーム上のリストボックスにシートのデータを表示する
本記事では「フォーム上のリストボックスにシートのデータを表示する」について解説していきます。
VBAでのツールでシート内のデータ出力やレコード編集などでデータ選択するときなどに使うことができたりします。
そして、今回は下...
本記事で使う表は下の通りです。
では、さっそく解説していきます。
シート上にある特定の1件のレコードをリストボックスに表示する
まず初めに「リストボックスの表示カラム数を設定」しておきます。
プロパティウィンドウにある「ColumnCount」欄に表示したい数を入力します。※今回は5つのカラムなので”5”と入力しています。
そして、今回はシート上にある「鈴木次郎のレコードをリストボックスに表示させる」という内容にします。
そのコードが下の通りです。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
Private Sub UserForm_Initialize() Dim targetRngRow As Long targetRngRow = Sheets("Sheet1").Range("A1").CurrentRegion _ .Find(What:="鈴木次郎", LookIn:=xlValues, LookAt:=xlWhole).Row Dim lastColumn As Long lastColumn = Sheets("Sheet1").Cells(1, Columns.Count).End(xlToLeft).Column Dim targetRecordData As Variant targetRecordData = Sheets("Sheet1").Range("A" & targetRngRow & ":" & Chr(64 + lastColumn) & targetRngRow) With ListBox .ColumnWidths = "20;50;20;20;100" .List = targetRecordData End With End Sub |
4~5行目:リストボックスに表示したいレコードの行数を取得。
※フォーム上で入力した値から検索をかけたいのなら、Findメソッドの引数Whatの値を変えればOK。
8行目:表の最終列数を取得。
11行目:4・8行目で取得した値を使って、指定した1レコードすべてのデータを配列に格納する。
15行目:リストボックスに11行目で取得した配列を渡す。
上の11行目で取得した1レコードが入った配列は下のようになっています。
1レコードで複数のカラムをリストボックスに渡したい場合は”配列の1つの要素に配列を格納する”必要があります。
そうすると、リストボックスは下のように表示されます。
〇おすすめのVBA参考書ランキング!
1位 | 2位 | 3位 |
---|---|---|
Excel VBA 脱初心者のための集中講座 | パーフェクトExcel VBA | ExcelVBA 実戦のための技術 |
初心者~中級者 | 中級者 | 初心者~中級者 |
【初心者が手に取るべき参考書】 ・「書籍+動画」で圧倒的に理解しやすい入門書になっている。 ・丁寧で詳しい解説でボリューム感がある。 | 【より深い理解をしたい方にお勧めな参考書】 ・テーマに対して丁寧な解説・適度な深さで解説されている。 ・幅広くテーマを扱っていることから、基礎知識をあらかた網羅できる。 | 【入門書と一緒に買うべき参考書】 ・1つ1つのテーマを経験豊富なエンジニア視点で解説してくれている。 ・実践的で効果的なコードの書き方が理解できる。 |
【読んでみた一言】 正直、入門書はコレ一冊でいいかも。あとは中級者用の参考書に進むべし。 | 【読んでみた一言】 深く書かれているが、少々専門的に書かれていることから、読む前に数冊の入門書を読破したほうが良い。 | 【読んでみた一言】 基礎知識を持っている人が次のレベルに達するきっかけを与えてくれる参考書である。 |
スポンサーリンク