2016-03-20 14 views
1

Aşağıdaki kodla ilgili küçük bir sorun yaşıyorum. If cümlecikteki koşul yerine getirilmez, ancak kod yine de tetiklenir. Bunun hakkında neler yapabileceğimi bilen var mı? (Zaten bir If Not Bildirimi ile devam etmeyi denedim ama bu da işe yaramıyor.)Koşul karşılanmadıysa ancak kod zaten çalışıyorsa

Bu, benim boş zamanlarımda yaptığım ve/veya çalışmam için biraz iş izci olması gerekiyordu.

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 - Teşekkürler, ama SQLGeorge aradığım yanıtı aldı. Sadece farklı veri tiplerini unuttum. – Sythr

+1

ah ... kod başka bir şekilde yanlıştı ... hala "Eğer myWTI * Len (benim Projem) o zaman bu durumda çalışacaktı: P (yine de" O zaman "ve" Else "parçasını değiştirmelisin –

+0

Yine böyle şeyler üzerinde kirli bir iş yapmam gerekiyorsa akılda tutulacağım. :) – Sythr

cevap

3

VBA olarak, hiçbir anlamı vardır

If myWTI Or myProject = Empty Then 

gibi bir şey yazamam. Böyle bir şey gerekir:

If myWTI = 0 Or myProject = "" Then 

Ayrıca myInt Tamsayı olarak ilan edilir ve Projem String olarak bildirilmiş unutmayın. Bu nedenle, "boş" veya "boş" olamazlar, her zaman, 0 veya "" gibi atanacak bir değere ihtiyaçları vardır.

+0

Kesinlikle haklısın ... Bunu kendim hakkında nasıl düşünmedim? Farklı veri türleri ... Çok teşekkür ederim! – Sythr

+2

İlk ifadeden yanılıyorsunuz, VBA’da gayet meşru. –

+0

@FlorentB. Eğer myWTI' bir “Boole” ise, kesinlikle. Ama 'String' veya 'Integer' değerleri için değil. – Vegard

İlgili konular