2017-10-12 11 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

try

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

必ずまた...もっとカッコの側に

を誤る、それは、どのようなタイプbarcodeに依存takenstockstaff、およびjobnumberがあります。私はあなたの宣言を見ることができません。あなたがRangeとしてそれらを宣言し、その旨を

set barcode = Range("B7") 

ようなものか何かでそれらを設定した場合

、あなたのコードは正常に動作する必要があります。あなたがStringIntegerタイプとして、それらを宣言し、

barcode = Range("B7").value 

でそれらを設定している場合しかし、その後、あなたの式は常にFALSEを評価します。 isEmpty()はプリミティブ型ではなくオブジェクト用です。

疑いで
+0

:?遊んで、まだ運:(その場合 – Noceo

+0

を追加し、どのような種類があります '' jobnumber' barcode'、 'takenstock'、' staff'、としています彼らはセル範囲、文字列、整数、...? – Kingbuttmunch

+0

括弧を使用していない、私が試してみましたより多くの括弧 – xpofer