Excel VBA:简单如果function似乎不能正常工作

这里是我执行UserForm之前检查的代码:

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

(如果成功,则从表中扣除Q.)

 Sheets("Warehouse").Cells(ProdID + 1, 3) = Sheets("Warehouse").Cells(ProdID + 1, 3) - SalesQ.Text 

基本上我有2张工作表 – 仓库和销售,我插入数据在仓库工作表中的用户代码是smth like(如果你需要更多,让我知道):

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

所以问题是,我有FIRST插入仓库表中的数据后。 每当我testing销售部分的销售,它告诉我没有足够的数量,即使有数量。 现在让我们假设Q = 100,如果input90,80,60等,Sales用户表单将不起作用,但是如果我input一些像20或10这样的小数字,它将起作用。 10或20,它可以完美的与任何其他数字,如80等。我认为这是结尾的东西像(.Text,.Value等?但IDK)Halp。

我怀疑SalesQ.Text是一个Stringtypes的文本字段。 因此,你正在比较一个数字sstring – 这是合法的,但可能会给出意想不到的结果。

如果SalesQ.Text确实包含一个表示数字的string(例如它包含“120”),那么您可以使用Val函数将其转换为数字

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

某些东西的.Text属性不会在math上与Range.Value或Range.Value2属性进行比较,而不会转换为真实的数字。

 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"