Собственно есть файл. В нем есть одна строка, заполнив которую мы получим необходимые нам данные для написания протокола, не суть. Заполнение формы производится двумя макросами.
Первый
Код
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
Запускается с кнопки.
В обоих случаях при нажатии децимальной запятой, которая работает при нажатии формы вручную и при обычном заполнении ячеек так, как мне требуется (как запятая), выдаётся точка при английской раскладке и точка и запятая при русской (., - два символа). Это делает заполнение формы через макрос бесполезным. Как убрать этот баг?
это не баг, это принципы работы системы, а у вас отсутвие знаний этих принципов можно возмущаться наличию багов, а можно учесть, что формула написанная и внесенная в ячейку с помощью 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, код следует оформлять соответствующим тегом: ищите такую кнопку (см. скрин) и исправьте своё стартовое сообщение. И не нужны там пустые строки - ведь читабельность страдает.
Ktan. 01 написал: В обоих случаях при нажатии децимальной запятой, которая работает при нажатии формы вручную и при обычном заполнении ячеек так, как мне требуется (как запятая), выдаётся точка при английской раскладке и точка и запятая при русской (., - два символа). Это делает заполнение формы через макрос бесполезным. Как убрать этот баг?
1. Что Вы имеете ввиду, говоря "при нажатии формы"? У Вас там 2 формы. ActiveSheet.ShowDataForm и UserForm1 2. Фраза: "Это делает заполнение формы через макрос бесполезным" - ни одну из форм Вы не заполняете с помощью макроса. 3. Очень давно попробовал воспользоваться таким неудобным инструментом, как ActiveSheet.ShowDataForm и с тех пор больше не пытался из-за его ограниченности. Не стал бы никому советовать им пользоваться. 4. Попробовал заполнить Вашу таблицу с помощью Вашей ActiveSheet.ShowDataForm и не понял, что Вы имели ввиду, написав "...выдаётся точка при английской раскладке и точка и запятая при русской...". Ввел через форму в поле "Коды KKS" значение 1.3.20. Оно же ввелось в одноименный столбец на листе.
Мне вместо точек нужны запятые. С точками формулы работают некорректно. Безусловно, данные в форму забиваются руками. Но добиться символа (,) при нажатии децимальной запятой на mum клавиатуре я не могу.