2016-03-20 8 views
1

私は以下のコードで少し挑戦しています。 If節の条件は満たされませんが、コードは引き続きトリガーします。誰でも私がこれについて何をすることができるか考えましたか? (私はすでにIf Not Statementで回っていましたが、どちらもうまくいきません)条件が満たされずにコードが実行された場合

これは私の自由な時間にやっている学習や仕事のためのちょっとした作業時間トラッカーになっています。

Option Explicit 
Dim Timestamp As Date 
Dim myProject As String 
Dim myWTI As Integer 
Dim myPayment As String 
Dim myPaymentDetail As String 
Dim i As Integer 
Public Sub StartTime() 

Application.ScreenUpdating = False 

myProject = [cell_Project] 
myWTI = [cell_WorktimeInterval] 
myPayment = [cell_Payment] 
myPaymentDetail = [cell_Paymentdetail] 

If myWTI Or myProject = Empty Then 
    MsgBox "No Project and/or WTI chosen.", vbCritical, "Error: No Project/WTI" 
    Exit Sub 
Else (rest of the code - this runs perfectly fine without this If-clause) 
+0

@DirkReichel - ありがとうございましたが、SQLGeorgeが私が探していた答えがありました。私は単に異なるデータ型を忘れていました。 – Sythr

+1

ああ...別の方法でもコードが間違っていました...もし 'myWTI * Len(myProject)Then Then'がその場合にはうまくいくでしょう:P(' Then'と 'Else'部分を入れ替える必要があります) –

+0

もう一度そのようなもので汚い仕事をする必要があるなら、私はそれを念頭に置いておきます。 :) – Sythr

答えて

3

VBAでは、あなたはセンスがないの

If myWTI Or myProject = Empty Then 

ような何かを書き込むことはできません。 あなたはこのようなものが必要:

If myWTI = 0 Or myProject = "" Then 

はまた、ミンはInteger型として宣言され、そしてMYPROJECTを文字列として宣言されていることに注意してください。したがって、 "null"または "空"にすることはできません。常に0や ""のように値を割り当てる必要があります。

+0

あなたは完全に正しいです...私はこれについてどう思いますか?異なるデータ型...ありがとうございます! – Sythr

+2

最初の声明について間違っています.VBAでは完全に合法です。 @FlorentB。 –

+0

'myWTI'が' Boolean'の場合は、確かに。しかし 'String'や' Integer'の値ではありません。 @FlorentB。 – Vegard

関連する問題