vba VarType, чтобы различать String и Integer - PullRequest
0 голосов
/ 25 июля 2011

Я готовлю функцию в VBA для создания запроса для поиска в базе данных.Один из параметров, «Значение», может быть строкой (например, «ON») или числом (например, 123), если это строка, я должен выбрать значения, отличные от нее (например, «OFF»), иесли это число, я должен выбрать значения, которые больше его (например, 234).

Я подготовил обобщенную ниже функцию, передав значение для сравнения «valueParam» как Вариант, затем пытаясь определить,«valueParam» - это строка или целое число.Проблема заключается в том, что функция 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 не распознает целое число, или имеет другое представление о различении чисел и строк?1006 *

Большое спасибо

1 Ответ

2 голосов
/ 25 июля 2011

Вы, вероятно, вводите число в строке. Используйте IsNumeric для предварительного преобразования или изменения вызова функции.

If IsNumeric(valueParam) Then
  valueParam = CLng(valueParam) 'or CDbl, depending on what you want ...
End If
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...