2016-03-20 4 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' будет работать в этом случае: P (вам все равно нужно будет поменять' Then' и 'Else' часть) –

+0

Я буду иметь это в виду, если мне нужно снова сделать какую-то грязную работу над такими вещами. :) – Sythr

ответ

3

В VBA, вы не можете писать что-то вроде

If myWTI Or myProject = Empty Then 

Это не имеет никакого смысла. Вам нужно что-то вроде этого:

If myWTI = 0 Or myProject = "" Then 

Также обратите внимание, что MyInt объявлен как Integer и MyProject объявлен как String. Поэтому они не могут быть «пустыми» или «пустыми», им всегда нужно назначить значение, например 0 или «».

+0

Ты совершенно прав ... Как я сам об этом не думал. Различные типы данных ... Спасибо, много! – Sythr

+2

Вы ошибаетесь в отношении первого заявления, это совершенно законно в VBA. –

+0

@FlorentB. Если 'myWTI' является' Boolean', то, безусловно. Но не для значений 'String' или' Integer'. – Vegard

Смежные вопросы