2013-10-09 16 views
11

Tôi đang cố gắng phát triển biểu mẫu để theo dõi hóa đơn khi chúng đến. Biểu mẫu sẽ có hộp tổ hợp nơi tôi có thể nhấp vào và chọn số nhà cung cấp. Tôi muốn hộp văn bản tự động điền vào dựa trên số nhà cung cấp được chọn từ hộp tổ hợp. Dưới đây là những gì tôi có cho đến thời điểm này:"Không thể lấy thuộc tính VLookup của lớp WorksheetFunction" lỗi

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 

Bảng tính 3 là thông tin được rút ra (số và tên nhà cung cấp).

Khi tôi quay trở lại với hình thức để kiểm tra mã, tôi nhận được lỗi sau:

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

Làm thế nào để sửa lỗi này?

+4

Nếu VLOOKUP() không thành công (không thể tìm thấy kết quả phù hợp), bạn sẽ gặp phải lỗi này. –

Trả lời

11

Hãy thử mã dưới đây

tôi sẽ khuyên bạn nên sử dụng xử lý lỗi trong khi sử dụng VLOOKUP vì lỗi có thể xảy ra khi lookup_value là không tìm thấy.

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 

HOẶC

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

Tôi đã có cùng một vấn đề. Dường như việc chuyển số Me.ComboBox1.Value làm đối số cho hàm Vlookup đang gây ra sự cố. Những gì tôi đã làm đã được gán giá trị này cho một đôi và sau đó đặt nó vào chức năng Vlookup.

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

Hoặc, với một phương pháp ngắn hơn, bạn chỉ có thể chuyển đổi loại trong hàm Vlookup bằng cách sử dụng Cdbl(<Value>).

Vì vậy, nó sẽ kết thúc được

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

Lạ vì nó có vẻ, nó làm việc cho tôi.

Hy vọng điều này sẽ hữu ích.

2

Tôi vừa gặp sự cố này với chương trình của riêng mình. Tôi bật ra rằng giá trị mà tôi đã tìm kiếm không có trong bảng tham chiếu của tôi. Tôi đã sửa bảng tham chiếu của mình và sau đó lỗi đã biến mất.

Các vấn đề liên quan