Excel VBA:如果函数似乎工作不正常,则很容易

Excel VBA:如果函数似乎工作不正常,则很容易,vba,excel,Vba,Excel,以下是我在执行UserForm之前检查的代码: If Sheets("Warehouse").Cells(ProdID + 1, 3) < SalesQ.Text Then MsgBox ("Not enough quantity - ID: ") & ProdID.Text Exit Sub End If 基本上我有两张表-仓库和销售,我在仓库表中插入数据,并使用用户表单代码,这是smth,如果您需要更多,请告诉我: Cells(emptyRow, 1) = I

以下是我在执行UserForm之前检查的代码:

If Sheets("Warehouse").Cells(ProdID + 1, 3) < SalesQ.Text Then
    MsgBox ("Not enough quantity - ID: ") & ProdID.Text
    Exit Sub
End If
基本上我有两张表-仓库和销售,我在仓库表中插入数据,并使用用户表单代码,这是smth,如果您需要更多,请告诉我:

Cells(emptyRow, 1) = IDBox.Text
Cells(emptyRow, 2) = prodBox.Text
Cells(emptyRow, 3) = QBox.Text

所以问题是,在我第一次将数据插入仓库表之后。每当我测试销售中的销售部分时,它都会告诉我,即使有数量,也没有足够的数量。现在让我们假设Q=100,如果我输入90、80、60等,销售用户表单将不起作用,但如果我输入一些小数字,如20或10,它将起作用。。。在使用小数字(如10或20)进行初始推导后,它将与任何其他数字(如80等)完美配合。我假设它的结尾是.Text、.Value等?但是IDK Halp。

我怀疑SalesQ.Text是字符串类型的文本字段。因此,您将数字与s字符串进行比较-这是合法的,但可能会产生意外的结果

如果SalesQ.Text确实包含表示数字的字符串,例如它包含120,则可以使用Val函数将其转换为数字

Sheets("Warehouse").Cells(ProdID + 1, 3) < Val(SalesQ.Text)

我怀疑SalesQ.Text是字符串类型的文本字段。因此,您将数字与s字符串进行比较-这是合法的,但可能会产生意外的结果

如果SalesQ.Text确实包含表示数字的字符串,例如它包含120,则可以使用Val函数将其转换为数字

Sheets("Warehouse").Cells(ProdID + 1, 3) < Val(SalesQ.Text)
某事物的性质不会在数学上与or进行比较 属性,而不转换为实数

If CDbl(Sheets("Warehouse").Cells(ProdID + 1, 3).Value2) < CDbl(SalesQ.Text) Then
    MsgBox ("Not enough quantity - ID: ") & ProdID.Text
    Exit Sub
End If
简言之,1不等于1。

某事物的属性不会在数学上与or进行比较 属性,而不转换为实数

If CDbl(Sheets("Warehouse").Cells(ProdID + 1, 3).Value2) < CDbl(SalesQ.Text) Then
    MsgBox ("Not enough quantity - ID: ") & ProdID.Text
    Exit Sub
End If

简而言之,1不等于1。

我不知道SalesQ的定义是什么。假设它是一个范围,即一个单元格,那么它应该是SalesQ.Value。如果它确实不包含数字,但包含文本,那么ProdID定义为什么而不是布尔比较?它在IF语句中用作整数或长类型,但在MsgBox语句中似乎用作范围。我不知道SalesQ的定义是什么。假设它是一个范围,即一个单元格,那么它应该是SalesQ.Value。如果它确实不包含数字,但包含文本,那么ProdID定义为什么而不是布尔比较?它在IF语句中用作整数或长类型,但在MsgBox语句中似乎用作范围。