2016-08-08 6 views
1

Ich bekomme einen Laufzeitfehler '13' (Typ stimmt nicht überein) für den folgenden Code und ich kann nicht herausfinden, warum. Es hat funktioniert, bevor ich die "und" und die zweite Bedingung hinzugefügt habe. Der erste (a, 43) Wert ist ein Fehler, der als "# N/A" gelesen wird. Irgendwelche Ideen?Laufzeitfehler '13' "Typenkonflikt" bei If Then-Anweisung

If IsNumeric(Sheets("Reuters").Cells(a, 43).Value) = True And _ 
Abs(Sheets("Reuters").Cells(a, 43).Value) >= 0.0799 Then 
     pfl = "P" 
     ct = ct + 1 
    Else 
     pfl = Empty 
    End If 
+1

Was ist der Wert der Zelle Sheets zu sagen ("Reuters"). Die Zellen (a, 43) .Value. Versuchen Sie, den Datentyp Double oder Integer vor dem Übergeben an die Funktion Abs zu übergeben. – Sorceri

+6

'And' in VBA nicht" Kurzschluss "- auch wenn der erste Ausdruck zu False ausgewertet wird, wird der zweite Ausdruck noch ausgewertet werden. Selbst wenn Ihr 'IsNumeric()' '' False' 'meldet, wird es trotzdem versuchen, den' Abs() 'Teil auszuführen. –

+0

@TimWilliams Danke für das Posten, ich wusste das nicht und es wird in der Zukunft hilfreich sein. – puzzlepiece87

Antwort

4

Code ändern

pfl = Empty 
If IsNumeric(Sheets("Reuters").Cells(a, 43).Value) Then 
    If Abs(Sheets("Reuters").Cells(a, 43).Value) >= 0.0799 Then 
     pfl = "P" 
     ct = ct + 1 
    End If 
End If 
Verwandte Themen