Страницы: 1
RSS
Странное поведение децимальной запятой при вводе данных при помощи формы с макроса.
 
Собственно есть файл. В нем есть одна строка, заполнив которую мы получим необходимые нам данные для написания протокола, не суть.
Заполнение формы производится двумя макросами.

Первый
Код
Private Sub Workbook_Open()
Range("A2").Select
    ActiveSheet.ShowDataForm
End Sub

Запускается при запуске файла. Второй
Код
Private Sub CommandButton4_Click()
    Dim Ans As Integer
    Ans = MsgBox("Это действие удалит все данные предыдущих измерений. Продолжить? ", vbYesNo)
    Select Case Ans
       Case vbYes
           Range("A2").Select
    ActiveSheet.ShowDataForm
        Case vbNo
    End Select
End Sub
Запускается с кнопки.


В обоих случаях при нажатии децимальной запятой, которая работает при нажатии формы вручную и при  обычном заполнении ячеек так, как мне требуется (как запятая), выдаётся точка при английской раскладке и точка и запятая при русской (., - два символа). Это делает заполнение формы через макрос бесполезным. Как убрать этот баг?  
Изменено: Ktan. 01 - 23.03.2020 12:26:30
 
это не баг, это принципы работы системы, а у вас отсутвие знаний этих принципов
можно возмущаться наличию багов, а можно учесть, что формула написанная и внесенная в ячейку с помощью VBA может (скорее всего будет) отличаться от той, что вносится в ячейку руками

напишите в А1 =СУММ(1;2;3)
перейдите в редактор VBE (Alt+F11)
откройте окно Immediate (Ctrl+G)
пишите в нем
? cells(1).FORMULA
видите =SUM(1,2,3), а не то что вы писали в ячейку
пишите
cells(2) = "=SUM(1,2,3)"
жмите Enter в В1 видите 6 и формулу тоже видите?
пишите
cells(3) = "=СУММ(1;2;3)"
жмите Enter, получили сообщение об ошибке?
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете!
 
Выходит, эти ошибки из за того что формулы написаны на русском? Мне стоит их переписать? Как исправить такое неприятное явление?  
Изменено: Ktan. 01 - 23.03.2020 11:02:58
 
Ktan. 01, код следует оформлять соответствующим тегом: ищите такую кнопку (см. скрин) и исправьте своё стартовое сообщение. И не нужны там пустые строки - ведь читабельность страдает.
 
Цитата
Ktan. 01 написал:
В обоих случаях при нажатии децимальной запятой, которая работает при нажатии формы вручную и при  обычном заполнении ячеек так, как мне требуется (как запятая), выдаётся точка при английской раскладке и точка и запятая при русской (., - два символа). Это делает заполнение формы через макрос бесполезным. Как убрать этот баг?
1. Что Вы имеете ввиду, говоря "при нажатии формы"? У Вас там 2 формы. ActiveSheet.ShowDataForm и UserForm1
2. Фраза: "Это делает заполнение формы через макрос бесполезным" - ни одну из форм Вы не заполняете с помощью макроса.
3. Очень давно попробовал воспользоваться таким неудобным инструментом, как ActiveSheet.ShowDataForm и с тех пор больше не пытался из-за его ограниченности. Не стал бы никому советовать им пользоваться.
4. Попробовал заполнить Вашу таблицу с помощью Вашей ActiveSheet.ShowDataForm и не понял, что Вы имели ввиду, написав "...выдаётся точка при английской раскладке и точка и запятая при русской...". Ввел через форму в поле "Коды KKS" значение 1.3.20. Оно же ввелось в одноименный столбец на листе.

Пока нет понимания, чего Вы хотите.
Изменено: Михаил Лебедев - 23.03.2020 13:07:26
Всё сложное - не нужно. Всё нужное - просто /М. Т. Калашников/
 
Мне вместо точек нужны запятые. С точками формулы работают некорректно.
Безусловно, данные в форму забиваются руками. Но добиться символа (,) при нажатии децимальной запятой на mum клавиатуре я не могу.  
Изменено: Ktan. 01 - 23.03.2020 13:33:07
 
Мне не известны параметры, с помощью которых можно управлять поведением метода Worksheet.ShowDataForm
Владимир
 
Цитата
Ktan. 01 написал:
Но добиться символа (,) при нажатии децимальной запятой на mum клавиатуре я не могу
продайте компьютер, считайте все на калькуляторе. там нет этих проблем
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете!
 
sokol92,

Ну в принципе я нашёл ответ.
https://www.engram9.info/excel-2007-vba-2/the-showdataform-sub-procedure.html
Если коротко то showdataform страшная кривулька из прошлого и не работает. Нужно создавать userform для моих целей.
Спасибо
 
Цитата
Ktan. 01 написал:
showdataform страшная кривулька из прошлого
Я на это и намекал :)  
Владимир
 
Добрый день. Подскажите адекватную альтернативу ActiveSheet.ShowDataForm.
 
Цитата
Ktan. 01 написал: Нужно создавать userform...
 
Попрактикуюсь )) Спасибо.
Страницы: 1
Наверх