web-dev-qa-db-ja.com

「WorksheetFunctionクラスのVLookupプロパティを取得できません」エラー

請求書を受け取ったときに追跡するフォームを開発しようとしています。フォームには、ベンダー番号をクリックして選択できるコンボボックスがあります。コンボボックスから選択したベンダー番号に基づいて、テキストボックスに自動的に入力するようにします。ここに私が持っているものがあります:

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プロパティを取得できません

どうすれば修正できますか?

16
user2864307

以下のコードを試してください

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
14
Santosh

私は同じ問題を抱えていました。 _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) 
_

奇妙に聞こえるかもしれませんが、私にとってはうまくいきます。

お役に立てれば。

4
Omar Khan

私は自分のプログラムでこの問題を抱えていました。探していた値が参照テーブルにないことがわかりました。参照テーブルを修正すると、エラーはなくなりました。

2
mjpowers0903