ActiveSheet のテーブル名を見つける
テーブルは、ListObject なので、以下の関数で変数Tにテーブル名が入ります。
Dim L As ListObject: Set L = ActiveSheet.ListObjects(1)
Dim T: T = L.Name
テーブルに、"月日"という項目があった場合、Range(T & "[月日]")で指定できます。
構造化参照とRangeの関係について
という事は、Range関数に、構造化参照の文字列を入れるとテーブル内の列を指定して参照できます。
これを利用すると、複数のテーブル参照をキーワードで切り替えることが可能になります。
例として、ロット番号(年-機械ー連番)の機械番号で参照するテーブルを切り替える関数を定義します。
関数TMIはMI、関数TDIはDIの拡張です。
Function TMI(R, Optional S = "")
On Error Resume Next
Dim M: M = MM(R)
Dim K: K = DI(R, M, 2) ' 機械番号
If K = 1 Then
S = CC(MLOT(Range("T01N_"), R), "A")
ElseIf K = 2 Then
S = CC(MLOT(Range("T02N_"), R), "B")
End If
TMI = S
End Function
Function TDI(A, T, Optional S = "")
On Error Resume Next
Dim I: I = Right(A, 1)
Dim J: J = Val(A)
If I = "A" Then S = DI(Range("T01N_[" & T & "]"), J)
If I = "B" Then S = DI(Range("T02N_[" & T & "]"), J)
TDI = S
End Function