Функция IsNumeric для быстрой проверки, является ли значение числом. Синтаксис и базовое использование IsNumeric в коде VBA Excel. Примеры.
Ошибка типа «Type mismatch»
При разработке макросов и пользовательских функций в VBA Excel часто возникает необходимость убедиться, что значение из ячейки, переменной, формы ввода или из внешнего источника является числом. Если попытаться выполнить математическую операцию с текстом или пустым значением, код вызовет ошибку типа «Type mismatch» (несоответствие типов). Чтобы избежать аварийного завершения программы, в VBA есть встроенная функция IsNumeric. Она позволяет быстро определить, можно ли интерпретировать переданное значение как число.

Функция IsNumeric в VBA Excel
IsNumeric — это встроенная функция VBA Excel, которая позволяет определить, можно ли интерпретировать значение как число. Она возвращает логическое значение типа Boolean, указывающее, можно ли рассматривать выражение как числовое.Функция IsNumeric широко используется при:
- проверке пользовательского ввода;
- обработке данных в Excel;
- написании макросов VBA.
Синтаксис:
|
1 |
IsNumeric(Expression) |
где expression — любое допустимое выражение VBA (переменная, константа, значение ячейки, результат другой функции и т.д.).
Возвращаемое значение
True— если значение является числом или может быть преобразовано в число.False— если значение не является числом.
Важно:
IsNumericработает на уровне синтаксического анализа, а не строгой типизации. Функция проверяет, можно ли безопасно преобразовать выражение в числовой тип без возникновения ошибки выполнения.
Особенности функции IsNumeric
Функция IsNumeric удобна, но имеет нюансы, о которых не следует забывать:
| Ситуация | Результат | Комментарий |
|---|---|---|
IsNumeric("3.14") |
True/False |
True в английской локали (разделитель — точка), False — в русской. |
IsNumeric("1,2E-3") |
True/False |
True в русской локали (разделитель — запятая), False — в английской. |
IsNumeric("") |
False |
Пустая строка не число. |
IsNumeric(" 100 ") |
True |
Пробелы автоматически игнорируются. |
IsNumeric("100 руб.") |
False |
Наличие букв или символов валюты возвращает False. |
Примеры использования IsNumeric
Проверка одной ячейки
|
1 2 3 4 5 6 7 8 9 10 |
Sub CheckSingleCell() Dim rng As Range Set rng = Range("A1") If IsNumeric(rng.Value) Then MsgBox "В ячейке число: " & rng.Value, vbInformation Else MsgBox "Содержимое ячейки не является числом.", vbExclamation End If End Sub |
Суммирование только числовых значений в диапазоне
|
1 2 3 4 5 6 7 8 9 10 11 12 |
Sub SumOnlyNumbers() Dim cell As Range Dim total As Double For Each cell In Range("B2:B15") If IsNumeric(cell.Value) Then total = total + CDbl(cell.Value) End If Next cell MsgBox "Сумма чисел: " & Format(total, "#,##0.00"), vbInformation End Sub |
Валидация пользовательского ввода через InputBox
|
1 2 3 4 5 6 7 8 9 10 11 12 |
Sub ValidateUserInput() Dim userInput As Variant userInput = InputBox("Введите числовое значение:", "Проверка данных") If userInput = "" Then Exit Sub ' Пользователь нажал Отмена If IsNumeric(userInput) Then MsgBox "Корректный ввод: " & CDbl(userInput), vbInformation Else MsgBox "Ошибка: введено нечисловое значение.", vbCritical End If End Sub |
Проверка на целое число
|
1 2 3 4 5 6 7 |
Sub CheckLong() If IsNumeric([A1]) And [A1] = Int([A1]) Then MsgBox "В ячейке A1 целое число: " & [A1], vbInformation Else MsgBox "Содержимое ячейки A1 не является целым числом: " & [A1], vbExclamation End If End Sub |
Ограничения функции IsNumeric
- Так как функция
IsNumericработает на уровне синтаксического анализа, её нельзя использовать для строгой проверки числовых типов. - Функция чувствительна к региональным настройкам (локалям).
- Требуется особая внимательность при работе с датами.
Функция IsNumeric в VBA Excel — это простой и эффективный инструмент для базовой проверки числовых значений. Она незаменима, когда надо быстро проверить число в VBA, осуществить валидацию ввода пользователя, обработать в Excel собственные или загруженные извне данные.