すべての部品を含む Access データベースがあります。ユーザーが使用する Excel アドインを作成しています。次の操作を行うことで、部品を照会できます (任意の Excel セルで)。
=MUN("VOLTAGE",A3)
この関数は Access データベースにクエリを実行し、PARTNO 値に対応する VOLTAGE 値を見つけます (この場合、PARTNO 値はユーザーの Excel ファイルのセル "A3" にあります)。
アドインの作成を開始したとき、すべてを Excel だけでテストしていました (私のデータベースは Excel でした)。
これが私のVBAで、Excelだけでできています:
Function MUN(what, partNo)
Dim ws As Worksheet, aCell As Range, pos As String, tablex As String, LastColumn As Integer, LastRow As Long, LastCell As Range, LastC As String, LastR As Integer
p = "P:\Engineering\Programs"
f = "partsDB.xls"
s = "Sheet1"
path = "'" & p & "[" & f & "]" & s & "'!"
Set ws = ActiveWorkbook.Sheets("table")
'DETERMINES THE LAST COLUMN AND ROW USED IN THE WORKSHEET (THIS WILL HELP DETERMINE THE TABLE FOR VLOOKUP)
LastRow = Cells.Find(what:="*", after:=[A1], SearchOrder:=xlByRows, SearchDirection:=xlPrevious).Row
LastColumn = Cells.Find(what:="*", after:=[A1], SearchOrder:=xlByColumns, SearchDirection:=xlPrevious).Column
LastC = Replace(Cells(1, LastColumn).Address(False, False), "1", "")
LastR = Cells(Rows.Count, "a").End(xlUp).Row
'DETERMINES THE COLUMN POSITION OF THE "WHAT"
Set aCell = ws.Rows(1).Find(what:=UCase(what), LookIn:=xlValues, _
LookAt:=xlWhole, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
MatchCase:=False, SearchFormat:=False)
pos = aCell.Column
'SETS THE TABLE
tablex = "A$1:" & LastC & "$" & LastR
MUN = Application.WorksheetFunction.VLookup(partNo, Range(tablex), pos, False)
End Function
別の問題に遭遇しました。複数の引数を指定して VLOOKUP を実行する必要があります。XX = "XXX" と YY = "YYY" の VLOOKUP を実行してから、"ZZZ" を返す必要があります。
MS Access は SQL クエリを使用できるため、Access データベースに接続して、上記の関数の内容を複製するクエリを実行し、複数の引数で VLOOKUP を実行するにはどうすればよいですか?