Здравствуйте. Ребята, как изменить существующий тип данных, в предоставленном коде ниже, дабы в текстовое поле было возможно вносить целые числа и числа с дробной частью через точку, типа раздел подраздел… [vba]
Код
Dim NumberSize As Double 'Double - Число дробное, с плавающей точкой NumberSize = FormInvoice.TxbNumberNak.Value 'Вод в поле объекта только числовые и дробные значения с плавающей точкой
[/vba]
Здравствуйте. Ребята, как изменить существующий тип данных, в предоставленном коде ниже, дабы в текстовое поле было возможно вносить целые числа и числа с дробной частью через точку, типа раздел подраздел… [vba]
Код
Dim NumberSize As Double 'Double - Число дробное, с плавающей точкой NumberSize = FormInvoice.TxbNumberNak.Value 'Вод в поле объекта только числовые и дробные значения с плавающей точкой
Типа так. Ввод только целых чисел и десятичных дробей. [vba]
Код
Private Sub TextBox1_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger) Dim dsep$: dsep = Me.ActiveControl.Value KeyAscii = DoubleBox_KeyPress(KeyAscii, dsep) End Sub Function DoubleBox_KeyPress(ByVal KeyAsci As Integer, dsep As String) Select Case KeyAsci Case 48 To 57: DoubleBox_KeyPress = KeyAsci Case 46, 44: If dsep Like ("*,*") Then DoubleBox_KeyPress = 0 Else DoubleBox_KeyPress = 44 '[","."] Case Else: DoubleBox_KeyPress = 0 End Select End Function
[/vba]
Типа так. Ввод только целых чисел и десятичных дробей. [vba]
Код
Private Sub TextBox1_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger) Dim dsep$: dsep = Me.ActiveControl.Value KeyAscii = DoubleBox_KeyPress(KeyAscii, dsep) End Sub Function DoubleBox_KeyPress(ByVal KeyAsci As Integer, dsep As String) Select Case KeyAsci Case 48 To 57: DoubleBox_KeyPress = KeyAsci Case 46, 44: If dsep Like ("*,*") Then DoubleBox_KeyPress = 0 Else DoubleBox_KeyPress = 44 '[","."] Case Else: DoubleBox_KeyPress = 0 End Select End Function
bmv98rus, Ясно что никак, не ясно как отловить то, что необходимо отсекать… А если изменить на тип данных даты, а затем при вводе в ячейку применяя апостроф менять на текстовый получая нужный результат?
bmv98rus, Ясно что никак, не ясно как отловить то, что необходимо отсекать… А если изменить на тип данных даты, а затем при вводе в ячейку применяя апостроф менять на текстовый получая нужный результат?Сергей13
RAN, Я так понял что дробные вводятся только через запятую? Не уловил функционального отличия Вашего кода от данной рабочей процедуры [vba]
Код
Sub NumberNak() 'Ввод раздела On Error Resume Next 'Обработчик ошибок Dim NumberSize As Double 'Double - Число дробное, с плавающей точкой NumberSize = FormInvoice.TxbNumberNak.Value 'Вод в поле объекта только числовые и дробные значения с плавающей точкой End Sub
[/vba] [vba]
Код
Private Sub TxbNumberNak_Change() 'Поле ввода раздела Call NumberNak 'Переменная - Ввод раздела End Sub
[/vba] Необходимо чтобы была возможность вносить целые числа и числа с дробной частью именно через точку, впоследствии это будет вноситься в ячейку и обозначать от введенного раздел или подраздел.
RAN, Я так понял что дробные вводятся только через запятую? Не уловил функционального отличия Вашего кода от данной рабочей процедуры [vba]
Код
Sub NumberNak() 'Ввод раздела On Error Resume Next 'Обработчик ошибок Dim NumberSize As Double 'Double - Число дробное, с плавающей точкой NumberSize = FormInvoice.TxbNumberNak.Value 'Вод в поле объекта только числовые и дробные значения с плавающей точкой End Sub
[/vba] [vba]
Код
Private Sub TxbNumberNak_Change() 'Поле ввода раздела Call NumberNak 'Переменная - Ввод раздела End Sub
[/vba] Необходимо чтобы была возможность вносить целые числа и числа с дробной частью именно через точку, впоследствии это будет вноситься в ячейку и обозначать от введенного раздел или подраздел.Сергей13
Сообщение отредактировал Сергей13 - Пятница, 15.03.2019, 21:42
Сергей13, давайте забудем о том что есть типы данных и просто определим, что может быть введено и в каком виде. Если говорить о пунктах, то 1 , 1.1, 1.1.1 …. так?
Сергей13, давайте забудем о том что есть типы данных и просто определим, что может быть введено и в каком виде. Если говорить о пунктах, то 1 , 1.1, 1.1.1 …. так?bmv98rus
Замечательный Временно просто медведь , процентов на 20.
Не улови функционального отличия Вашего кода от данной рабочей процедуры
И это очень плохо. С учетом того, что функциональные отличия сопоставимы с функциональными отличиями подводной лодки и космического корабля, обнаружить различие действительно сложно. Ну, а для того, чтобы вводилось через точку, нужно всего лишь заменить в одном месте запятую на точку, и в одном месте код символа запятой на код символа точки.
Не улови функционального отличия Вашего кода от данной рабочей процедуры
И это очень плохо. С учетом того, что функциональные отличия сопоставимы с функциональными отличиями подводной лодки и космического корабля, обнаружить различие действительно сложно. Ну, а для того, чтобы вводилось через точку, нужно всего лишь заменить в одном месте запятую на точку, и в одном месте код символа запятой на код символа точки.RAN
RAN, Насколько понял в параметрах excel (что нежелательно) и в коде Like ("*.*") Если да, то менял, но вводится только запятая, в добавок запятую можно ввести перед числовым значением, что тоже не есть нежелательно... Ребята спасибо, оставлю как есть, не столь критично, пусть будет запятая.
RAN, Насколько понял в параметрах excel (что нежелательно) и в коде Like ("*.*") Если да, то менял, но вводится только запятая, в добавок запятую можно ввести перед числовым значением, что тоже не есть нежелательно... Ребята спасибо, оставлю как есть, не столь критично, пусть будет запятая.Сергей13
Сообщение отредактировал Сергей13 - Пятница, 15.03.2019, 21:45
RAN, Не знаю где Вы еще точку поставили, но он работает и не дает возможность ввести знак перед числом. Нюанс еще был с вводом набранного значения в ячейку, происходил перевод в числовое дробное. Решил с помощью апострофа переводить в текстовый, нормально, числовой не нужен. [vba]
RAN, Не знаю где Вы еще точку поставили, но он работает и не дает возможность ввести знак перед числом. Нюанс еще был с вводом набранного значения в ячейку, происходил перевод в числовое дробное. Решил с помощью апострофа переводить в текстовый, нормально, числовой не нужен. [vba]