2011-07-25 69 views
0

我正在準備VBA中的函數來創建一個查詢來搜索數據庫。其中一個參數「Value」可以是一個字符串(例如:「ON」)或一個數字(例如:123),如果它是一個字符串,我必須選擇與它不同的值(例如:「OFF」)和如果它是一個數字,我必須選擇大於它的值(例如:234)。vba VarType區分字符串和整數

我已經準備好下面彙總的函數,傳遞值作爲Variant比較「valueParam」,然後嘗試檢測「valueParam」是一個String還是Integer。問題是函數VarType將每次「valueParam」視爲一個字符串。

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不識別Integer或有另一個想法來區分數字和字符串?

非常感謝您

回答

2

您可能正在進入一個字符串的數量。使用IsNumeric可以預先轉換它或更改您的函數調用。

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

好,它的工作原理,謝謝! –