Здравствуйте. Помогите разобраться с формой. Мне необходимо что бы числа вводимые в форму передавались на лист и при повторном открытии формы отображались в ней, то же самое для переключателей, нужно что бы отображался какой переключатель активен. Сделал свой вариант, но он не отвечает моим ожиданиям. Какие проблемы возникли: 1) при открытии формы в дробной части появляются нули, а нужны пустые ячейки 2) при вводе дробного числа необходимо повторно переоткрывать форму что бы число записалось как дробное (запятая меняется на точку) 3) переключатель при первом открытии не имеет положения по умолчанию, а при повторном открытии формы не отображается какой из вариантов выбран. Вообще собственно мне нужна нормальная обратная связь формы и листа, чего я пока не смог добиться. Прошу помочь с написанием правильного варианта, который нивелировал бы все эти недостатки.
Здравствуйте. Помогите разобраться с формой. Мне необходимо что бы числа вводимые в форму передавались на лист и при повторном открытии формы отображались в ней, то же самое для переключателей, нужно что бы отображался какой переключатель активен. Сделал свой вариант, но он не отвечает моим ожиданиям. Какие проблемы возникли: 1) при открытии формы в дробной части появляются нули, а нужны пустые ячейки 2) при вводе дробного числа необходимо повторно переоткрывать форму что бы число записалось как дробное (запятая меняется на точку) 3) переключатель при первом открытии не имеет положения по умолчанию, а при повторном открытии формы не отображается какой из вариантов выбран. Вообще собственно мне нужна нормальная обратная связь формы и листа, чего я пока не смог добиться. Прошу помочь с написанием правильного варианта, который нивелировал бы все эти недостатки.Vertep7
If [D5].Value <> "" Then [D5].Value = CDec([D5].Value) ' для использования дробных значений If [g5] Then OptionButton1 = True Else OptionButton2 = True End If
[/vba]
запятая меняется на точку так и должно быть иначе получите текст
[vba]
Код
If [D5].Value <> "" Then [D5].Value = CDec([D5].Value) ' для использования дробных значений If [g5] Then OptionButton1 = True Else OptionButton2 = True End If
[/vba]
запятая меняется на точку так и должно быть иначе получите текстNic70y
ЮMoney 41001841029809
Сообщение отредактировал Nic70y - Вторник, 08.04.2025, 12:23
Да я знаю, спасибо. Но в моем варианте нужно дважды в форму зайти, потому что если записать дробное значение, то оно передается как текстовое и все привязанные к форме расчеты разрушаются. А вот если зайти повторно, то значение на листе трансформируется в числовое. Но так скорее всего не должно быть, если форма сделана правильно.
Да я знаю, спасибо. Но в моем варианте нужно дважды в форму зайти, потому что если записать дробное значение, то оно передается как текстовое и все привязанные к форме расчеты разрушаются. А вот если зайти повторно, то значение на листе трансформируется в числовое. Но так скорее всего не должно быть, если форма сделана правильно.Vertep7
Private Sub UserForm_Activate() If [D5].Value <> "" Then [D5].Value = CDec([D5].Value) ' для использования дробных значений If [g5] Then OptionButton1 = True Else OptionButton2 = True End If '----------------------------------------------------------------------------- UserForm1.TextBox1.ControlSource = "B5" UserForm1.TextBox2 = Replace(Range("D5").Value, ".", ",") End Sub
Private Sub TextBox1_Change() [B5] = UserForm1.TextBox1.Value End Sub
Private Sub TextBox2_Change() [D5] = Replace(UserForm1.TextBox2.Value, ",", ".") End Sub
[/vba]
ну если сильно хочется, то как-то так [vba]
Код
Private Sub UserForm_Activate() If [D5].Value <> "" Then [D5].Value = CDec([D5].Value) ' для использования дробных значений If [g5] Then OptionButton1 = True Else OptionButton2 = True End If '----------------------------------------------------------------------------- UserForm1.TextBox1.ControlSource = "B5" UserForm1.TextBox2 = Replace(Range("D5").Value, ".", ",") End Sub
Private Sub TextBox1_Change() [B5] = UserForm1.TextBox1.Value End Sub
Private Sub TextBox2_Change() [D5] = Replace(UserForm1.TextBox2.Value, ",", ".") End Sub
Пытался макросом создать автозамену запятой на точку, что бы сразу с первого раза дробные числа записывались, но к сожалению ничего не вышло. Не помню в чем там оказалась проблема, наверное по обратной связи точка вставлялась в форму, а форма ее вообще не воспринимает, только запятые.
Пытался макросом создать автозамену запятой на точку, что бы сразу с первого раза дробные числа записывались, но к сожалению ничего не вышло. Не помню в чем там оказалась проблема, наверное по обратной связи точка вставлялась в форму, а форма ее вообще не воспринимает, только запятые.Vertep7
О да, форма заработала как нужно. Без конфликтов, замечательно. В текстовое поле даже можно не только запятую, но и точку вставлять одинаково верный вариант на выходе. Супер, то что нужно. Спасибо) Прикладываю готовый вариант кому нужно)
О да, форма заработала как нужно. Без конфликтов, замечательно. В текстовое поле даже можно не только запятую, но и точку вставлять одинаково верный вариант на выходе. Супер, то что нужно. Спасибо) Прикладываю готовый вариант кому нужно)Vertep7