2013-10-09 4 views
11

Ich versuche, ein Formular zu entwickeln, um die eingehenden Rechnungen zu verfolgen. Das Formular enthält eine Combobox, in der ich eine Kreditorennummer anklicken und auswählen kann. Ich möchte, dass das Textfeld automatisch anhand der in der Combobox ausgewählten Kreditorennummer ausgefüllt wird. Hier ist, was ich bisher:"Die VLookup-Eigenschaft der WorksheetFunction-Klasse konnte nicht abgerufen werden" Fehler

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 

Arbeitsblatt 3, von dem die Informationen gezogen wird (die Lieferantennummer und Name).

Als ich in die Form zurück, um den Code zu testen, erhalte ich folgende Fehlermeldung:

Run-time error '1004': Unable to get the VLookup property of the WorksheetFunction class

Wie kann ich dieses Problem beheben?

+4

Wenn der SVERWEIS() fehlschlägt (keine Übereinstimmung finden), erhalten Sie diesen Fehler. –

Antwort

11

Try Code unten

-I-Fehler-Handler zu verwenden, wird empfohlen bei der Verwendung von vlookup da Fehler auftreten können, wenn die lookup_value nicht gefunden wird.

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 

ODER

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 
2

ich das gleiche Problem. Es scheint, dass die Übergabe des Me.ComboBox1.Value als Argument für die Vlookup-Funktion das Problem verursacht. Was ich getan habe, war, diesen Wert einem Double zuzuordnen und dann in die Vlookup-Funktion zu schreiben.

Dim x As Double 
x = Me.ComboBox1.Value 
Me.TextBox1.Value = Application.WorksheetFunction.VLookup(x, Worksheets("Sheet3").Range("Names"), 2, False) 

Oder für eine kürzere Methode können Sie nur den Typ innerhalb der Cdbl(<Value>) mit Vlookup Funktion konvertieren.

So wäre es am Ende

Me.TextBox1.Value = Application.WorksheetFunction.VLookup(Cdbl(Me.ComboBox1.Value), Worksheets("Sheet3").Range("Names"), 2, False) 

Seltsam ist, wie es klingen mag, es funktioniert für mich.

Hoffe, das hilft.

2

Ich hatte gerade dieses Problem mit meinem eigenen Programm. Ich stellte fest, dass der Wert, nach dem ich suchte, nicht in meiner Referenztabelle war. Ich habe meine Referenztabelle korrigiert, und dann ging der Fehler weg.

Verwandte Themen