我目前正在尝试创建一个应用程序,我可以在使用VBA时将销售存储在单个工作表中。
当我尝试使用Vlookup确定ProductID的价格以便我不必自己输入值时,Vlookup将返回相同的值" 2015"
我不知道它出了什么问题
这是工作表的布局:Layout 这是我的Userform的布局: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
有人可以帮我解决问题吗?它可能只是我目前忽略的一件小事。
谢谢, 马亭
答案 0 :(得分:3)
您的代码有2个问题; “J2:L2000”应替换为Range(“J2:L2000”)(2015年是2015年错误的整数版本)
如果Vlookup找不到Textbox3.Value,您的代码将无效:在这种情况下,它将返回错误:代码看起来应该更像
{{1}}
答案 1 :(得分:1)
您的代码引发了“2015错误”,因为您将CREATE TABLE IF NOT EXISTS player_data ( UniqueID string, Money int )
置于 TextBox3.Value
函数中作为第一个参数。请注意以下代码有效:
VLookup
这也消除了使用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
转换Price变量的需要。希望其他人可以清楚地说明为什么CInt
中的TextBox3.Value
会引发错误?