Привет всем.
Немного туплю, порыл форум, но никак не найду подходящего решения, или не могу протестировать... а VBA основательно приподзабыл уже
Есть три ячейки, в которых может быть написано число с десятичным знаком или без десятичного знака, причем может быть сохранено как текст или как число:
нужен кусочек кода VBA для проверки содержимого ячейки
Если в ячейке записано целое число, без десятичного знака, то это не ошибка. Неважно, как оно сохранено - как текст или как число
Если в ячейке записано число со знаками после запятой, то если разделитель не точка - это ошибка.
Если в ячейке записано число со знаками после запятой, то если разделитель точка - это не ошибка.
Макрос должен работать в системе с любыми региональными стандартами. Иными словами, хороши только целые числа, и то, что может быть преобразовано в число, но при этом обязательно в нем разделитель - точка.
вот такой код не дает нормального результата, увы
Идеи?
Немного туплю, порыл форум, но никак не найду подходящего решения, или не могу протестировать... а VBA основательно приподзабыл уже
Есть три ячейки, в которых может быть написано число с десятичным знаком или без десятичного знака, причем может быть сохранено как текст или как число:
| 0.5 | true |
| 0,5 | false |
| 1 | true |
Если в ячейке записано целое число, без десятичного знака, то это не ошибка. Неважно, как оно сохранено - как текст или как число
Если в ячейке записано число со знаками после запятой, то если разделитель не точка - это ошибка.
Если в ячейке записано число со знаками после запятой, то если разделитель точка - это не ошибка.
Макрос должен работать в системе с любыми региональными стандартами. Иными словами, хороши только целые числа, и то, что может быть преобразовано в число, но при этом обязательно в нем разделитель - точка.
вот такой код не дает нормального результата, увы
| Код |
|---|
Sub tezt()
With Application
.DecimalSeparator = "."
.ThousandsSeparator = ","
.UseSystemSeparators = False
End With
Debug.Print "0.5", IsNumeric("0.5") ' false, должно быть true
Debug.Print "0,5", IsNumeric("0,5") ' true, должно быть false
Debug.Print "1", IsNumeric("1") ' true, всё в порядке
Application.UseSystemSeparators = True
End Sub |
Идеи?
F1 творит чудеса