前提・実現したいこと
Excelマクロで、コードをキーにVLOOKUPでマスタから値を二次元配列に格納し、一括代入したいと考えています。
発生している問題
VLOOKUPでマスタから値が取得できていません。
下部に記載されているマクロの On Error GoTo 部分をコメントアウトしたところ、下記のエラーが出ます。
「WorksheetFunctionクラスのVLookupプロパティを取得できません。」
マクロを使わず、Excelシート上でセルにマクロのソースと同じになる(はず)のVLOOKUPの文を入力すると、正しく値が取得できます。
※マスタにコードの重複はありません。
下記がExcelに直接入力したVLOOKUP文
vb
1=VLOOKUP($A4,マスタ!S:BB,4,FALSE)
該当のソースコード
vb
1 ' 転記するデータを配列に格納する 2 Dim varTbBody() As Variant 3 eRow = wsTB_A.Cells(Rows.Count, 1).End(xlUp).Row 4 ReDim varTbBody(eRow, 5) 5 j = 0 6 7 With wsTB_A 8 ' 勘定コードごとにマスタの値を格納する 9 For i = pcTbDataRow To eRow 10 For k = 0 To 4 11 varTbBody(j, k) = CStr(funGetNameFromMst(wsCommon_mst.Range("S:BB"), .Cells(i, 1), k)) 12 Next k 13 j = j + 1 14 Next i 15 ' 試算表に転記する 16 .Range(.Range("B4"), Cells(eRow, 6)) = varTbBody 17 End With
プロシージャ内で呼び出しているファンクション
vb
1Public Function funGetNameFromMst(ByRef rangeVlookup As Range, ByRef strKey As String, ByRef strKey2) 2 On Error GoTo funGetNameFromMst_err 3 4 Dim strReturn As String 5 6 strReturn = "" 7 ' 渡されるKey2によって取得する列を分岐 8 Select Case strKey2 9 Case 0 ' G/L勘定タイプ 10 strReturn = WorksheetFunction.VLookup(CStr(strKey), rangeVlookup, 4, False) 11 Case 1 ' 機能領域 12 strReturn = WorksheetFunction.VLookup(CStr(strKey), rangeVlookup, 6, False) 13 Case 2 ' 税カテゴリ 14 strReturn = WorksheetFunction.VLookup(CStr(strKey), rangeVlookup, 12, False) 15 Case 3 ' 統制勘定 16 strReturn = WorksheetFunction.VLookup(CStr(strKey), rangeVlookup, 14, False) 17 Case 4 ' 原価要素タイプ 18 strReturn = WorksheetFunction.VLookup(CStr(strKey), rangeVlookup, 18, False) 19 End Select 20 21 funGetNameFromMst = strReturn 22 Exit Function 23 24funGetNameFromMst_err: 25 funGetNameFromMst = "" 26End Function
詳しい方いたら、何がいけないのか教えていただきたいです。
よろしくお願いいたします。
回答2件
あなたの回答
tips
プレビュー