VBA如果和多个语句

所以我试图确保所有的字段填写在我正在创build一个窗体,但是我有一些麻烦与多个if语句。

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 

我也尝试删除第二个不是

感觉像我已经尝试了一切,但代码只是不感兴趣

预先感谢您的帮助

尝试

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

总是在更多的括号上犯错

此外,这取决于什么types的barcodetakenstockstaff和工作jobnumber 。 我看不到你的声明。

如果你将它们声明为Range ,并将它们设置为类似的东西

 set barcode = Range("B7") 

或者这样的事情,你的代码应该可以正常工作。 但是,如果您将它们声明为StringIntegertypes并将其设置为

 barcode = Range("B7").value 

那么你的expression将总是评估FALSEisEmpty()仅用于对象,不是基本types。