IsNumeric () в порядке, он будет принимать только те значения, которые соответствуют Double. Он осведомлен на региональном уровне, то есть для французских региональных настроек десятичный разделитель является запятой.
Я только что попробовал это в Немедленном окне.
Debug.Print IsNumeric("4e308")
False
Определение VB6 Double в руководстве: «Переменные VB6 Double хранятся в виде 64-разрядных (8-байтовых) чисел с плавающей точкой IEEE в диапазоне значений от -1,79769313486232E308 до -4,94065645841247E-324 для отрицательных значений и от 4.94065645841247E-324 до 1.79769313486232E308 для положительных значений ".
Я думаю, что это то же самое, что и SQL Server с плавающей точкой, если смотреть онлайн docs . «Данные чисел с плавающей точностью со следующими действительными значениями: от -1,79E + 308 до -2,23E - 308, 0 и 2,23E + 308 до 1,79E + 308."