Excel VBA:简单如果功能似乎无法正常工作

时间:2016-05-03 03:45:05

标签: excel vba excel-vba

这是我在执行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张 - 仓库和销售,我在Warehouse页面中插入数据,其中包含一个类似于用户形式的代码(如果您需要更多,请告诉我):

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

所以问题是,在我第一次在Warehouse表中插入数据之后。每当我在销售部分测试销售时,它告诉我即使有数量也没有足够的数量。现在让我们说Q = 100,如果我输入90,80,60等,销售用户形式将无法工作,但是如果我输入一些像20或10这样的小数字,它将起作用...在初始扣除之后用小数字表示10或20,它将与80等任何其他数字完美配合。我认为它的结尾像(.Text,.Value等?但是IDK)Halp。

2 个答案:

答案 0 :(得分:4)

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

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

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

答案 1 :(得分:2)

某些内容的.Text属性不会与Range.ValueRange.Value2进行数学比较 {{3}}属性,但未转换为真实数字。

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"