2017-10-12 61 views
0

所以我想确保所有字段都填写在我创建的窗体上,但是我在多个if语句中遇到了一些麻烦。VBA如果和多个语句

If Not IsEmpty(barcode) And Not IsEmpty(takenstock) And Not IsEmpty(staff) And Not IsEmpty(jobnumber) Then 

    Sheet2.Cells(emptyrow, 1).Value = staff 
    Sheet2.Cells(emptyrow, 2).Value = Product 
    Sheet2.Cells(emptyrow, 3).Value = ProductCode 
    Sheet2.Cells(emptyrow, 4).Value = takenstock 
    Sheet2.Cells(emptyrow, 5).Value = jobnumber 
    Sheet2.Cells(emptyrow, 6).Value = Mydate 
    Sheet2.Cells(emptyrow, 7).Value = Mytime 
    'removes stock from list of products 
    Sheets("List of products").Range(findproduct).Value = selectproduct - takenstock 
    'clears sheet 
    Sheet1.Range("b1").Value = "" 
    Sheet1.Range("b6").Value = "" 
    Sheet1.Range("b5").Value = "" 
    Sheet1.Range("b7").Value = "" 
Else 
    MsgBox "Please fill Barcode, stock to be taken,staff field and the job number" & vbNewLine & "Thank you", vbOKOnly, "Missing fields" 

End If 

这是我第一次没有工作的尝试,所以我尝试

If Not IsEmpty(barcode) And Not IsEmpty(takenstock) Then 
    if Not IsEmpty(staff) And Not IsEmpty(jobnumber) Then 

我也尝试删除第二个不行的

感觉就像我已经试过各种方法,但代码只是不感兴趣

在此先感谢您的帮助

回答

2

尝试

If (Not IsEmpty(barcode)) And (Not IsEmpty(takenstock)) And 
    (Not IsEmpty(staff)) And (Not IsEmpty(jobnumber)) Then 

总是宁可多括号的身边...

另外,要看是什么类型barcodetakenstockstaffjobnumber是。我看不到你的声明。

如果你声明他们作为Range,并设定他们喜欢的东西

set barcode = Range("B7") 

或诸如此类的话,你的代码应该工作正常。但是,如果你宣布他们为StringInteger类型,并将它们与

barcode = Range("B7").value 

那么你的表情总是会评估FALSEisEmpty()仅适用于对象,不适用于原始类型。

+0

如果有疑问:添加更多括号 – Noceo

+0

我试图玩弄使用括号,仍然没有运气:( – Kingbuttmunch

+0

在这种情况下,什么样的是'barcode','takenstock','staff'和'jobnumber'是谁?他们的单元格范围,字符串,整数,...? – xpofer