Страницы: 1
RSS
в TextBox заменить символ
 
как в тексте TextBox1  формы заменить точку на запятую  
 
в TextBox1 в результате вычислений вставляется значение типа 555.08  
 
те если в TextBox1 в результате вычислений вставляется значение 555.08  оно было заменено на 555,08  
 
рекодером записал на листе в ячейке  
 
Sub Макрос1()  
 
   Range("D9").Select  
   ActiveCell.Replace What:=".", Replacement:=",", LookAt:=xlPart, _  
       SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _  
       ReplaceFormat:=False  
   Cells.Find(What:=".", After:=ActiveCell, LookIn:=xlFormulas, LookAt:= _  
       xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:=False _  
       , SearchFormat:=False).Activate  
End Sub  
 
как применить это к TextBox1 или есть другое решение ?
 
Вот так  
 
Private Sub TextBox1_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)  
   If KeyAscii = Asc(".") Then KeyAscii = Asc(",")  
End Sub  
 
 
Если не понятно, см. пример в файле
 
Если Вам необходимо обработать результат то так    
 
TextBox1.Text = Replace(TextBox1.Text, ".", ",")  
 
Если ограничить ввод символов (кроме цифр и запятой), то так  
 
Private Sub TextBox1_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)  
       If KeyAscii < 48 Or KeyAscii > 57 Then KeyAscii = 0  
End Sub  
 
Запрет копирования значения в TextBox1  
 
Private Sub TextBox1_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)  
       If KeyCode = vbKeyV And Shift = 2 Then KeyCode = 0  
End Sub
 
{quote}{login=VovaK}{date=18.11.2011 07:18}{thema=}{post}Если ограничить ввод символов (кроме цифр и запятой), то так  
 
Private Sub TextBox1_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)  
       If KeyAscii < 48 Or KeyAscii > 57 Then KeyAscii = 0  
End Sub{/post}{/quote}  
Влад, а где про запятую? :-)
 
еще одна проблема образовалась  
 
ввожу в код формы макрос для запрета ввода поля всего кроме цифр  
 
проблема - когда английская раскладка клавиатуры все нормально  
когда русская - код дает ошибку  
 
 
Private Sub TextBox1_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)  
   If InStr("0123456789", Chr(KeyAscii)) = 0 Then  
   KeyAscii = 0      
   End If  
End Sub  
 
в чем тут дело?
 
можно так попробовать:  
Private Sub TextBox1_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)  
If KeyAscii < 48 Or KeyAscii > 57 Then KeyAscii = 0  
End Sub
Редко но метко ...
 
А в 07:18 разве другое предлагается?
 
{quote}{login=Юрий М}{date=18.11.2011 12:03}{thema=}{post}А в 07:18 разве другое предлагается?{/post}{/quote}  
 
упс, не заметил. )
Редко но метко ...
 
If KeyAscii < 48 Or KeyAscii > 57 Then KeyAscii = 0   - это единственный код который работает с русской раскладкой  
 
коды  
If Chr(KeyAscii) Like "[!0-9]" Then KeyAscii = 0
If Not Chr(KeyAscii) Like "#" Then KeyAscii = 0    
If InStr("0123456789", Chr(KeyAscii)) = 0 Then KeyAscii = 0    
с русской раскладкой не работают дают ошибку  
 
сейчас еще одна проблема - надо запретить все кроме  
чисел, точки, запятой, +, -, *, /, %, ( , )  
как это в код  
If KeyAscii < 48 Or KeyAscii > 57 Then KeyAscii = 0  
вставить  
 
 
(в код If InStr("0123456789", Chr(KeyAscii)) = 0 Then KeyAscii = 0  
без проблем вставляется доп символы  жалко код корректно не работает)
 
{quote}{login=mihha}{date=18.11.2011 12:25}{thema=}{post}сейчас еще одна проблема - надо запретить все кроме чисел, точки, запятой, +, -, *, /, %, ( , )  
как это в код  
If KeyAscii < 48 Or KeyAscii > 57 Then KeyAscii = 0  
вставить  
{/post}{/quote}Ищем таблицу кодов и добавляем в проверку.
 
If KeyAscii < 48 Or KeyAscii > 57 Or KeyAscii < 48 Or KeyAscii > 39 Or KeyAscii <> 37 Or KeyAscii <> 61 Then KeyAscii = 0  
 
вроде так
 
Еще можно так:  
Private Sub TextBox1_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)  
If KeyAscii <> 37 Then _  
If KeyAscii < 40 Or KeyAscii > 57 Then KeyAscii = 0  
End Sub
Редко но метко ...
 
{quote}{login=mihha}{date=18.11.2011 12:34}{thema=}{post}Or KeyAscii <> 61    
{/post}{/quote}  
 
так ведь про знак "=" не было сказано )
Редко но метко ...
 
Миха, Вы бы сразу определились, что в конечном итоге должно получиться, запутали всех и себя в том числе. Зачем Вам точка, если Вы ее меняете на запятую. Далее - вводить арифметическое действие (+, -, / ) в TextBox не совсем корректно, пользователь может ввести некорректную строку и результат может получиться непредсказуемым. Рекомендую ограничиться цифрами и запятой...
 
забыл про =    
спасибо заработало как надо
Страницы: 1
Читают тему
Наверх