如何确定从字符串创建的变体是否为整数?

问题描述 投票:6回答:4

我正在确定从字符串创建的变体是否是整数。

这里是一个测试脚本:

dim v as variant
v = "42"
if v <> round(v) then
    msgBox("<>")
end if

msgBox弹出,可能是因为该变体是从字符串创建的,尽管我希望v为= round(v)。

excel vba access-vba
4个回答
9
投票

您应该写类似的东西:

if cDbl(v) <> round(cDbl(v)) Then

cDbl是将任何数据转换为双精度数字的函数。在调用cDbl函数之前,可能必须处理无法使用isNumeric()函数将v转换为数字的情况。您甚至可以使用cInt函数进行比较:

if isnumeric(v) then
    if cDbl(v) - cInt(v) <> 0 Then
    ....
    endif
else
   debug.print "data cannot be converted to a number"
endif

3
投票
Sub test()

    Dim v As Variant
    v = "42"
    If Val(v) <> Int(Val(v)) Then
       MsgBox ("<>")
    End If

End Sub

如果使用Val(),它将尽最大努力将其转换为数字。如果不能,它将返回零,在这种情况下,Val(v)将始终等于Int(Val(v))。


0
投票

如何检查地板功能是否与天花板功能匹配?

Private Function isWhole(value As Variant) As Boolean

    If WorksheetFunction.Ceiling_Math(value) = WorksheetFunction.Floor_Math(value) Then
        isWhole = True
    Else: isWhole = False
    End If

End Function

我有一个类似的问题,此代码对我有用。


0
投票

如果我怀疑数字可能以字符串形式出现,我喜欢使用简单的+0技巧。例如索引/匹配的东西。像这样:

Dim v As Variant
v = "42"

If IsNumeric(v) Then
    If v + 0 <> Round(v + 0) Then
       MsgBox ("<>")
    End If
End If

这应该适用于日期,文本,数字,数字作为文本。不知道是否或何时打破,应该没问题。

© www.soinside.com 2019 - 2024. All rights reserved.