Rozważmy następującą funkcję VBA:Czy jest to błąd w funkcjach IsNumeric i CDbl() VBA?
Function castAndAdd(inputValue As Variant) As Variant
If IsNumeric(inputValue) Then
castAndAdd = CDbl(inputValue) + 4
Else
castAndAdd = inputValue
End If
End Function
wywołanie go z bezpośrednim okna daje to wyjście:
?castAndAdd("5,7")
61
?castAndAdd("5, 7")
5, 7
Stepping przez "5,7" rozmowy, uważam, że IsNumeric("5,7")
powraca true
. Myślałem, że może to daje ten wynik, ponieważ w Europie przecinek jest używany jako separator dziesiętny; ten wynik jest dziwny, ponieważ jestem w Stanach Zjednoczonych, więc moje ustawienia regionalne powinny określać, że Excel rozpoznaje tylko kropkę jako separator dziesiętny, prawda?
Nawet jeśli odłożymy na bok kwestię Europa/USA, większy problem polega na tym, że CDbl ("5,7") zwraca 57, więc CDbl("5,7") + 4
zwraca 61, a nie 9.7, tak jak bym się spodziewał, gdyby przecinek był dziesiętny separator. Czy jest to błąd, czy też po prostu nie rozumiem, jak używać CDbl()
?
Myślę, że 'CDbl' zastępuje', '' '" 'it.e go usuwa. – newguy