2013-10-09 18 views
11

Sto cercando di sviluppare un modulo per tenere traccia delle fatture non appena arrivano. Il modulo avrà una casella combinata in cui posso fare clic e selezionare un numero di fornitore. Voglio che la casella di testo si completi automaticamente in base al numero del venditore selezionato dalla casella combinata. Ecco quello che ho finora:"Impossibile ottenere la proprietà VLookup della classe WorksheetFunction" Errore

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 

Scheda 3 'da cui l'informazione è in fase di elaborazione (il numero del fornitore e nome).

Quando torno al modulo per verificare il codice, ottengo il seguente errore:

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

Come posso risolvere questo problema?

+4

Se il CERCA.VERT() non riesce (non riesce a trovare una corrispondenza), si otterrà questo errore. –

risposta

11

Prova sottostante Codice

mi consiglia di utilizzare gestore di errore durante l'utilizzo del vlookup, perché si potrebbe verificare l'errore quando il lookup_value non viene trovato.

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 

O

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

ho avuto lo stesso problema. Sembra che passare il Me.ComboBox1.Value come argomento per la funzione Vlookup stia causando il problema. Quello che ho fatto è stato assegnare questo valore a un doppio e quindi inserirlo nella funzione Vlookup.

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

Oppure, per un metodo più breve, si può semplicemente convertire il tipo all'interno della funzione Vlookup utilizzando Cdbl(<Value>).

Così finirebbe per essere

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

Per quanto strano possa sembrare, funziona per me.

Spero che questo aiuti.

2

Stavo solo avendo questo problema con il mio programma. Ho scoperto che il valore che stavo cercando non era nella mia tabella di riferimento. Ho corretto la mia tabella di riferimento, quindi l'errore è andato via.

Problemi correlati