2016-03-20 5 views
1

Ich habe eine leichte Herausforderung mit diesem Code unten. Die Bedingung in der If-Klausel ist nicht erfüllt, aber der Code löst trotzdem aus. Hat jemand eine Idee, was ich dagegen tun kann? (Ich habe bereits versucht, mit einem If-Not-Statement herumzulaufen, aber das wird auch nicht funktionieren.)Wenn die Bedingung nicht erfüllt ist, aber der Code trotzdem ausgeführt wird

Dies soll ein wenig Arbeitszeit-Tracker für mein Lernen und/oder Arbeit, die ich in meiner Freizeit mache.

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 - Danke, aber SQLGeorge hatte die Antwort, die ich suchte. Ich habe einfach die verschiedenen Datentypen vergessen. – Sythr

+1

ah ... der Code war auch auf andere Weise falsch ... immer noch 'Wenn myWTI * Len (myProject) Then' würde in diesem Fall funktionieren: P (du müsstest immer noch den' Then' und 'Else' Teil tauschen)) –

+0

Ich behalte es im Hinterkopf, wenn ich wieder etwas schmutzige Arbeit an solchen Sachen machen muss. :) – Sythr

Antwort

3

In VBA, können Sie nicht so etwas wie

If myWTI Or myProject = Empty Then 

schreiben, das hat keinen Sinn. Sie brauchen etwas wie folgt aus:

If myWTI = 0 Or myProject = "" Then 

Bitte beachten Sie auch, dass myInt als Integer deklariert wird, und myProject wird als String deklariert. Daher können sie nicht "null" oder "leer" sein, sie benötigen immer einen Wert, der zugewiesen werden soll, wie 0 oder "".

+0

Du hast vollkommen Recht ... Wie habe ich nicht selbst darüber nachgedacht? Verschiedene Datentypen ... Vielen Dank! – Sythr

+2

Sie irren sich bei der ersten Aussage, es ist in VBA völlig legitim. –

+0

@FlorentB. Wenn 'myWTI' ein' Boolean' ist, dann sicher. Aber nicht für 'String' oder' Integer' Werte. – Vegard

Verwandte Themen