VBA Vlookup返回错误的结果

我目前正在尝试创build一个应用程序,在使用VBA时可以将销售额存储在单个工作表中。

当我尝试使用Vlookup来确定ProductID的价格,以便我不必在自己的input值时,Vlookup总是返回相同的值“2015”

我不知道哪里出了问题

这是工作表的布局: 布局这是我的用户表单: 布局的 布局

这是我在我的命令button上使用的代码:

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 

有人可以帮我解决我的问题吗? 这可能只是我目前忽略的一个小事。

谢谢你,Martijn

你的代码有两个问题。 应使用Range(“J2:L2000”)replace“J2:L2000”(2015年是2015年错误的整数版本)

如果Vlookup无法findTextbox3.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 

你的代码会抛出一个“2015错误”,因为你把第一个参数放在 VLookup函数的TextBox3.Value 。 请注意,以下代码工作:

 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转换你的Pricevariables的需要。 希望别人能说清楚为什么TextBox3.Value会引发错误?