我正在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不能识别整数或者有另一个想法来区分数字和字符串?
非常感谢
答案 0 :(得分:2)
您可能正在输入字符串中的数字。请事先使用IsNumeric
进行转换或更改函数调用。
If IsNumeric(valueParam) Then
valueParam = CLng(valueParam) 'or CDbl, depending on what you want ...
End If