【VBA備忘録】ListObjectで複数列を選択する(Vlookup)

2024年5月9日

みなさん、こんにちは
Excelのテーブル(ListObject)ってすごく便利なんですけど、
VBAで制御する場合
1列を選択(Listcolumn) or 全部を選択(DataBodyRange/Range)するのはすごく簡単なのに
複数列を選択するのってどうやるかわからない!!!
何が困るってVLOOKUPで2列目を先頭にしたいときですよね…
検索してもよくわからない~という方、下記をご参照ください!!!

List Objectで複数列を選択する

VLOOKUPで検索する

検索窓に対象の果物を入力するとListObjects(1)から値段を拾ってメッセージボックスで表示するプログラムを作っていきます。

EXCELの関数でやるかVBAでMATCHを使えば簡単にできますが、今回はVLOOKUPでやってみたいと思います。
ここで難関なのは1列目は「No.」なので2列目より後ろVLOOKUPの列を指定しないといけないところです。

List ObjectsをRangeでつなげる

ListObjectを複数選択する場合はRangeでListColumnsをつなげるとできます。

Shironeco(嫁)
Shironeco(嫁)
RangeをSetしとくとらくちんですよ

Set 複数列 = Range(ListObjects(1).ListColumns(最初の列).DataBodyRange, ListObjects(1).ListColumns(最後の列).DataBodyRange)

Code

Sub ListObjectでVlookup()

Set st = ActiveSheet
Set lo = st.ListObjects(1)
Set rg = Range(lo.ListColumns(2).DataBodyRange, lo.ListColumns(3).DataBodyRange)
nm = st.Cells(3, 5)

pr = WorksheetFunction.VLookup(nm, rg, 2, False)

MsgBox pr

End Sub

実行するとりんごの値段がわかります。

VBA

Posted by shironecoworks