|
автор: Graers (30.11.-1 в 00:00) |
|
| Подскажите, пжста, как сделать, чтобы при вводе в textbox "," вводилась "." | |
|
| |
|
автор: pashulka (30.11.-1 в 00:00) |
|
| Re: проверка значений запятой Есть несколько вариантов решения поставленного вопроса, но самый правильный это - не давать вводить запятую, т.е. при попытке ввода запятой заменить её на точку.
Private Sub TextBox1_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
If KeyAscii = 44 Then KeyAscii = 46
End Sub
Private Sub TextBox1_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
If KeyCode = vbKeyV And Shift = 2 Then KeyCode = 0
End Sub | |
|
| |
|
автор: Graers (30.11.-1 в 00:00) |
|
| Re[1]: проверка значений запятой Спасибо большое я уже сделал как у Вас в первом варианте | |
|
| |
|
автор: vkodor (30.11.-1 в 00:00) |
|
| Re: проверка значений запятой Private Sub TextBox1_Change()
If Right(TextBox1.Text, 1) = "," Then _
TextBox1.Text = Left(TextBox1.Text, Len(TextBox1.Text) - 1) & "."
End Sub | |
|
| |
|
автор: pashulka (30.11.-1 в 00:00) |
|
| Re[1]: проверка значений запятой Давно я не видел подобной некомпетентности, во-первых, предложенный способ предполагает, что пользователь будет вводить символы последовательно, а лично мне никто не мешает вводить/править их так, как это нужно мне, т.е. в любом порядке, во-вторых, можно просто скопировать данные в которых наличествует запятая и в этом случае, мы также получим некорректный результат. Поэтому резюмируя всё вышеизложенное, можно сказать, что предложенный способ не справляется с поставленной задачей, в отличии от первого ответа, где все эти нюансы учтены. | |
|
| |
|
автор: vkodor (30.11.-1 в 00:00) |
|
| Re[1]: проверка значений запятой мда
Может у меня некомпетентность в vba (поскольку я его не изучал) зато нет некомпетентности в общении.
ваше сообщение куда корректнее было бы таким
во-первых, предложенный способ предполагает, что пользователь будет вводить символы последовательно, а лично мне никто не мешает вводить/править их так, как это нужно мне, т.е. в любом порядке, во-вторых, можно просто скопировать данные в которых наличествует запятая и в этом случае, мы также получим некорректный результат. Поэтому резюмируя всё вышеизложенное, можно сказать, что предложенный способ не справляется с поставленной задачей, в отличии от первого ответа, где все эти нюансы учтены. | |
|
| |
|
автор: pashulka (30.11.-1 в 00:00) |
|
| Re[1]: проверка значений запятой Моё сообщение и так более чем корректно, а истинная некорректность - это давать совет (осознавая при этом, что Вы не знаете язык и особенности конкретных приложений) который по всем пунктам проигрывает уже опубликованному варианту. | |
|
| |
|
автор: vkodor (30.11.-1 в 00:00) |
|
| Re: проверка значений запятой может и не по теме но если нужно чтобы при вводе значения было число можно сделать так
Private Sub TextBox1_Change()
TextBox1.Text = Replace(TextBox1.Text, ",", Application.International(3))
TextBox1.Text = Replace(TextBox1.Text, ".", Application.International(3))
End Sub | |
|
| |
|
автор: pashulka (30.11.-1 в 00:00) |
|
| Re[1]: проверка значений запятой К сожалению, представленный код предполагает, что пользователь будет вводить именно число, где в качестве разделителя целой части и дробной будет использоваться точка, запятая или реально используемый разделитель. А стало быть, любое отклонение от правил неизбежно приведёт к получению некорретного результата, например, Иванов, Петров, Сидоров или 12, 45 ,78 или 12-45 (при условии, что - не является разделителем) | |
|
| |
|
|