Страницы: 1
RSS
При переходе из Wind7 в Wind10 в TextBox значение с точкой, в региональніх стандартах азделитель запятая
 
Есть простой код:
Код
Private Sub UserForm_Initialize()
TextBox1 = Range("A1")
If IsNumeric(TextBox1) Then
Label1 = "Числовой"
Else
Label1 = "Нечисловой"
End If
End Sub

Вот как выглядит результат в Windows 7 (в региональных стандартах установлена запятая в качестве разделителя дробной части):
Если не видно, то поясню: в ячейке А1- число 313,5; в TextBox подтянулось тоже 313,5; то есть в обоих случаях имеется ЗАПЯТАЯ; соответственно формат определен как числовой.
А от как выглядит результат в Windows 10 (в региональных стандартах также установлена запятая в качестве разделителя дробной части):

Поясню, поскольку плохо видно:
в ячейке А1- 313,5
в TextBox- 313.5
То есть в TextBox значение подтянулось с ТОЧКОЙ! Соответственно формат определен как нечисловой
В результате перехода на Windows 10 у нас полетели все экселевские макросы!

Кто-то может подсказать, что с этим делать (чтобы не переписывать программы и не менять в региональных стандартах запятую на точку)?
Изменено: tim8579 - 02.07.2019 07:52:46
 
Цитата
tim8579 написал:
Если не видно, то поясню:
tim8579, даже слишком видно :)
Изменено: _Igor_61 - 28.06.2019 18:20:22
 
Извините, скопировал из ворда, даже не посмотрел, что скрины отсутствуют
 
tim8579,  А не показалось ли что в самом названии TextBox заложено что там текст, а не число?
По вопросам из тем форума, личку не читаю.
 
Попробуем разобраться с Вашими региональными надстройками. Занесите в ячейку A1 (общего формата) формулу =1/2 и выполните следующий макрос:
Код
Sub test()
  Debug.Print Range("A1").Value, IsNumeric(Range("A1").Value)
  Debug.Print Range("A1").Text, IsNumeric(Range("A1").Text)
End Sub
Что получилось?
Владимир
 
Здесь даже на файл расщедрился. :)
Изменено: Андрей VG - 02.07.2019 07:50:14
 
Цитата
tim8579 написал: Кто-то может подсказать, что с этим делать (чтобы не переписывать программы и не менять в региональных стандартах запятую на точку)?
Есть такая проблема, она связана не с версией Office, и не с его битностью 32/64, а именно с версией операционной системы, точнее с библиотекой FM20.DLL
Возможно, проблему совместимости когда-нибудь устранят.
А пока советую вместо TextBox1 = Range("A1").Value использовать TextBox1.Text = Range("A1").Value
Изменено: ZVI - 02.07.2019 07:50:19
 
Цитата
sokol92 написал: Что получилось?
  0.5 True
0,5    True
 
Цитата
vikttur написал:
нужно подождать реакции автора
Согласен. Но автор вообще может не появиться или проигнорировать замечание. К тому же с названием проблема - разве макросы НЕ работают?
Цитата
ZVI написал:
баг, о котором полезно было бы знать многим
Влад, приветствую! Конечно очень полезная информация. Может быть просто создашь свою тему по этому вопросу? ))
 
Виктор, Юрий - создал отдельную тему здесь.
 
Цитата
ZVI написал:
Есть такая проблема, она связана не с версией Office, и не с его битностью 32/64, а именно с версией операционной системы, точнее с библиотекой FM20.DLL
Вот тут что-то похожее - использование VBA кода на win7 и win10. Грешат на FM20.dll
https://www.mrexcel.com/forum/excel-questions/922318-moving-excel-vba-code-windows-7-windows-10-h-e-l-p.html
Цитата:
Скрытый текст

Я наталкнулся "на стену недопонимания" подключив надстройку в Win10+office2007.
Показав собщение об отсутствии библиотеки, в коде подсвечивается функция ChrW(257)...

Эта часть была не очень важна и я эти строки с ChrW функцией закоментировал.
Это заполнение было -> ComboBox5.AddItem "Pied" & ChrW(257) & "v" & ChrW(257) & "jums"

После этого выдало ту же ошибку, но уже ругнулось на другую часть кода без ChrW. Даже не запомнил на какую, поняв, что проблема не в коде.
Изменено: jack_21 - 06.07.2019 01:05:24
Страницы: 1
Наверх