請求書を受け取ったときに追跡するフォームを開発しようとしています。フォームには、ベンダー番号をクリックして選択できるコンボボックスがあります。コンボボックスから選択したベンダー番号に基づいて、テキストボックスに自動的に入力するようにします。ここに私が持っているものがあります:
Private Sub ComboBox1_Change()
'Vlookup when ComboBox1 is filled
Me.TextBox1.Value = Application.WorksheetFunction.VLookup( _
Me.ComboBox1.Value, Worksheets("Sheet3").Range("Names"), 2, False)
End Sub
ワークシート3から情報が引き出されます(ベンダー番号と名前)。
フォームに戻ってコードをテストすると、次のエラーが表示されます。
実行時エラー '1004':WorksheetFunctionクラスのVLookupプロパティを取得できません
どうすれば修正できますか?
以下のコードを試してください
Lookup_valueが見つからないときにエラーが発生する可能性があるため、vlookupの使用中にエラーハンドラを使用することをお勧めします。
Private Sub ComboBox1_Change()
On Error Resume Next
Ret = Application.WorksheetFunction.VLookup(Me.ComboBox1.Value, Worksheets("Sheet3").Range("Names"), 2, False)
On Error GoTo 0
If Ret <> "" Then MsgBox Ret
End Sub
OR
On Error Resume Next
Result = Application.VLookup(Me.ComboBox1.Value, Worksheets("Sheet3").Range("Names"), 2, False)
If Result = "Error 2042" Then
'nothing found
ElseIf cell <> Result Then
MsgBox cell.Value
End If
On Error GoTo 0
私は同じ問題を抱えていました。 _Me.ComboBox1.Value
_をVlookup
関数の引数として渡すと問題が発生するようです。私がやったことは、この値をdoubleに割り当て、それをVlookup関数に入れることでした。
_Dim x As Double
x = Me.ComboBox1.Value
Me.TextBox1.Value = Application.WorksheetFunction.VLookup(x, Worksheets("Sheet3").Range("Names"), 2, False)
_
または、より短い方法として、Cdbl(<Value>)
を使用してVlookup関数内の型を変換することもできます。
そのため、最終的には
_Me.TextBox1.Value = Application.WorksheetFunction.VLookup(Cdbl(Me.ComboBox1.Value), Worksheets("Sheet3").Range("Names"), 2, False)
_
奇妙に聞こえるかもしれませんが、私にとってはうまくいきます。
お役に立てれば。
私は自分のプログラムでこの問題を抱えていました。探していた値が参照テーブルにないことがわかりました。参照テーブルを修正すると、エラーはなくなりました。