vba VarType区分String和Integer

时间:2011-07-25 12:41:44

标签: string vba types integer

我正在VBA中准备一个函数来创建一个搜索数据库的查询。其中一个参数“Value”可以是一个字符串(例如:“ON”)或一个数字(例如:123),如果它是一个字符串,我必须选择与它不同的值(例如:“OFF”)和如果它是一个数字,我必须选择大于它的值(例如:234)。

我准备了下面概述的函数,将值传递给比较“valueParam”作为Variant,然后尝试检测“valueParam”是String还是Integer。问题是函数VarType每次将“valueParam”视为String。

Function prepareQuery(ByVal valueParam As Variant) as String
    Dim STR_Query as String
    STR_Query = "Select * FROM tablename"

    If VarType(valueParam) = vbInteger Then
        STR_Query = STR_Query & " WHERE Value>" & valueParam
    ElseIf VarType(valueParam) = vbString Then
        STR_Query = STR_Query & " WHERE Value<>'" & valueParam & "'"
    End If

    prepareQuery = STR_Query
End Function

有没有人知道为什么VarType不能识别整数或者有另一个想法来区分数字和字符串?

非常感谢

1 个答案:

答案 0 :(得分:2)

您可能正在输入字符串中的数字。请事先使用IsNumeric进行转换或更改函数调用。

If IsNumeric(valueParam) Then
  valueParam = CLng(valueParam) 'or CDbl, depending on what you want ...
End If