2016-05-14 185 views
0

我目前正在嘗試創建一個應用程序,可以在使用VBA時將銷售額存儲在單個工作表中。VBA Vlookup返回錯誤結果

當我嘗試使用VLOOKUP確定的ProductID的價格,使我沒有在自己輸入的值VLOOKUP總是返回相同的值「2015」

我不知道到哪裏去錯誤

這是表的佈局:Layout 這是我的用戶窗體的佈局:Layout

這是我在我的命令按鈕使用代碼:

Private Sub CommandButton1_Click() 

Dim emptyRow As Long 
Dim r As Range 

Dim Productprijs As Integer 
Dim productaantal As Integer 
Dim Eindprijs As Integer 



Sheet1.Activate 

emptyRow = WorksheetFunction.CountA(Range("A:A")) + 1 

Cells(emptyRow, 1).Value = TextBox1.Value 
Cells(emptyRow, 2).Value = TextBox2.Value 
Cells(emptyRow, 3).Value = TextBox3.Value 
Cells(emptyRow, 5).Value = TextBox4.Value 

Productprijs = CInt(Application.VLookup(TextBox3.Value, "J2:L2000", 3, False)) 
productaantal = TextBox2.Value 
Eindprijs = Productprijs * productaantal 
Cells(emptyRow, 4).Value = Eindprijs 


UserForm1.Hide 

有人可以幫我解決我的問題嗎?這可能只是我目前忽略的一件小事。

感謝的問候, 馬亭

+2

嘗試用Productprijs = CInt(Range(「L」&Application.Match(TextBox3.Value))替換'Productprijs = CInt(Application.VLookup(TextBox3.Value,「J2:L2000」,3,False))' ,Range(「J:J」),0)))' –

回答

3

有2個問題,你的代碼; 「J2:L2000」應該用範圍(「J2:L2000」)代替(2015是2015年錯誤的整數版本)

如果Vlookup無法找到Textbox3.Value:情況下,將返回一個錯誤:代碼應該看起來更像這個

Sub testv() 
    Dim v As Variant 
    Dim i As Long 
    v = Application.VLookup(9, Range("A1:a3"), 1, False) 
    If Not IsError(v) Then 
     i = CLng(v) 
    Else 
     MsgBox "not Found" 
    End If 
End Sub 
1

您的代碼拋出「2015年錯誤」,因爲你把TextBox3.ValueVLookup函數作爲第一個參數。請注意以下代碼的工作原理:

Private Sub CommandButton1_Click() 
    Dim emptyRow As Long 
    Dim Price As Variant 
    Dim Quantity As Double 
    Dim Total As Double 
    Dim x As Double 

    'This finds the next empty row in the first table 
    emptyRow = WorksheetFunction.CountA(Range("A:A")) + 1 

    'Place the new values from the UserForm to the table 
    Cells(emptyRow, 1).Value = TextBox1.Value 'Date 
    Cells(emptyRow, 2).Value = TextBox2.Value 'Quantity 
    Cells(emptyRow, 3).Value = TextBox3.Value 'ProductID 
    Cells(emptyRow, 5).Value = TextBox4.Value 'Customer 

    'Assign the value of the ProductID text box to x 
    x = TextBox3.Value 

    'Calculate the total price, using x instead of TextBox3.Value 
    Price = Application.VLookup(x, Range("J2:L3"), 3, False) 

    Quantity = TextBox2.Value 
    Total = Price * Quantity 
    Cells(emptyRow, 4).Value = Total 

    UserForm1.Hide 
End Sub 

這也消除了使用CInt轉換您的Price變量的需要。希望別人能說清楚爲什麼VLookup內的TextBox3.Value會引發錯誤?