Если я правильно понял, вы передаете числовое значение для работы в двух форматах - целое и строковое. Конечно, вы можете использовать вариант и перед использованием этого значения, проверить его:
IsNumeric(yourVariant) gives you True or False:
IsNumeric("222") - True
IsNumeric(222) - True
IsNumeric("222abc") - False
После этого убедитесь, что вы можете преобразовать ваш вариант Integer (http://msdn.microsoft.com/en-us/library/s2dy91zy.aspx): CInt (yourVariant)
if IsNumeric(yourVariant) then
someIntVariable = CInt(yourVariant)
else
MsgBox "bla bla bla"
EndIf
Я посмотрел какой-то ваш код, вы можете использовать Select Case Statement (http://msdn.microsoft.com/en-us/library/cy37t14y.aspx) или сохранить If-Else-If. Обсуждение в комментариях поможет вам выбрать.
если мой ответ неверен, предоставьте более конкретный фрагмент кода. Мне было трудно понять, что происходит с вашим приложением.
Например я пытаюсь проанализировать шаг за шагом кода выполняется функция fcComm
из ячейки E68, листа прогноза. достижения функции setFcResult
мы имеем следующий:
Function setFcResult(bettype As String, fcOption)
' bettype = "FT.OU"
' fcOption = "HF.HL"
setFcResult = True
bettype = UCase(bettype)
fcOption = UCase(fcOption)
If bettype = "FT.OU" Then
If fcOption >= 0 Then ' you compare "HF.HL" with 0. It returns true. You can verify this by yourself.
hfs = 5
afs = fcOption - 5 ' here you perform "HF.HL" - 5. It returns error and function terminates.
Else
setFcResult = False
End If
ElseIf bettype = "HT.OU" Then
...
Таблица Odds выглядит следующим образом:
Bet Тип поиска:
bettype = Application.WorksheetFunction.VLookup(oddsId, odds.DataBodyRange, 3, False)
- oddsId - 13
- odds.DataBodyRange $ A $ 3: $ BT $ 47
- bettype = 13
Вы поиск по oddsId
, VLookup
поиски oddsId
в первом столбце odds.DataBodyRange
- это колонка А, но в колонке А вы имеют TransId.
Так у вас есть неправильный bettype для переменной fcOption.
Вам не нужно делать ничего особенного (то же самое, что при определении их как целого или строкового).Логически, вы не можете рассматривать вариант с содержимым String как Integer и наоборот; это скорее всего то, что провоцирует вашу ошибку. Вся таблица как справочная информация, безусловно, полезна, но она довольно большая; можете ли вы уточнить точные переменные/условия, в которых вы получаете ошибки? – varocarbas
@varocarbas Проблема с переменной «fcOption» в разделе «Прогноз/модуль прогноза». – Shan
Непонятно, что делает эта функция и почему ее вычисления должны быть неправильными. Если вы выполняете связанные с номером действия только с номерами и строковыми с помощью строк, у вас не должно быть никаких проблем; но из этого кода не ясно, какие входы получает fcOption в каждом сценарии. Если вам нужна дополнительная (и точная) помощь, вам нужно будет указать конкретные условия (например, когда я вызываю эту функцию с помощью bettype = "" и fcOption = "", я получаю "", и я хотел бы получить ""). – varocarbas