VLookup関数をCellからMacroに移動すると#N/Aが返される問題があります。VLookupはセルで動作しますが、マクロでは動作しません
現時点では、書式設定されていない2番目の表を参照している表があり、書式付きリストを作成しています。フォーマットされたリストは一連のVLOOKUPコマンドを使用して作成されますが、これには手動で新しい行と 'SubPart'という名前を入力する必要があります。
私は単純にソーステーブル全体を読んで、新しいフォーマットされたマクロをワンクリックで読み込むマクロを書いています。
残念ながら、VLOOKUPがセルからマクロに変換されたときに動作しないようです。
Sub PopulateSubs()
On Error GoTo MyErrorHandler:
Dim SubAssy, SubPart As String
Dim BomCount, i As Integer
Dim BlankRow As Long
Dim Source_Table As ListObject
Set Source_Table = Worksheets("BoMs").ListObjects("Table_Query_From_Syspro")
SubAssy = InputBox("Enter the Subassembly:")
If Len(SubAssy) > 0 Then
BomCount = Application.CountIf(Range("Table_Query_from_Syspro[ParentPart]"), SubAssy)
For i = 1 To BomCount
BlankRow = Range("A10000").End(xlUp).Row + 1
Cells(BlankRow, 1).Select
SubPart = SubAssy & i
ActiveCell = i
ActiveCell.Offset(0, 1).Select
ActiveCell = Application.WorksheetFunction.VLookup(SubPart, Source_Table, 2, 0)
ActiveCell.Offset(0, 1).Select
ActiveCell = Application.WorksheetFunction.VLookup(SubPart, Source_Table, 3, 0)
Next i
Else
MsgBox "You entered an invalid value"
End If
MyErrorHandler:
If Err.Number = 1004 Then
MsgBox "Sub assembly Not Present in the table."
End If
End Sub
マニュアルテーブルのVLOOKUPは正常に動作していましたが、このアプリケーションでは#N/A以外は返すことができません。
私はこのサイトで同様の解決策を検討し、SubPartを「SubPart」と「SubPart」としてマクロを実行しましたが、いずれの用語も役立たないようです。
ソーステーブルはすべてのセルで[全般]としてフォーマットされていますが、これが文字列エントリとタイプの不一致を引き起こすかどうかはわかりません。
ありがとうございます!
'Source_Table' ** Dim'ed **と**セット**? –
'Source_Table'はどのように定義されていますか? #N/Aエラーは、値がソース表の最初の列に見つからないことを示します。また、SubPartのデータ型がSource_Tableの最初の列と同じであること、つまりtext対numberもチェックします。 – teylyn
私の問題は、テーブルをマクロで定義する必要があることを知らないことに起因すると思われます。私はそれを細胞式の中でこう呼んだのだと思った。わかりやすくするために、Source_Tableは、セルから作業している場合にVLOOKUPで参照できる、ワークブック内の既存のテーブルです。 – Hamburgertime