Private Sub TextBox1_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger) If KeyAscii = 32 Then If Right(Me.TextBox1.Text, 1) = " " Then KeyAscii = 0 End If End If End Sub
[/vba]
[vba]
Код
Private Sub TextBox1_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger) If KeyAscii = 32 Then If Right(Me.TextBox1.Text, 1) = " " Then KeyAscii = 0 End If End If End Sub
Работает )) но мне не подряд а общем тексте ввод боле 2 пробел или я не правильно поставили вопрос, например: Textbox ФИО (Александр" "Сергеевич" "Пушкин" " здесь конца текста запретит ввод третьего пробела, кто-то поставить пробел конца текста и макрос не работает)
Работает )) но мне не подряд а общем тексте ввод боле 2 пробел или я не правильно поставили вопрос, например: Textbox ФИО (Александр" "Сергеевич" "Пушкин" " здесь конца текста запретит ввод третьего пробела, кто-то поставить пробел конца текста и макрос не работает)Shaxislam
А так не разрешает вводить пробел после 3-го слова [vba]
Код
Private Sub TextBox1_Change() TextBox1 = Replace(TextBox1.Text, " ", " ") If UBound(Split(TextBox1.Text)) = 3 Then If Right(TextBox1.Text, 1) = " " Then TextBox1.Text = Left(TextBox1.Text, Len(TextBox1.Text) - 1) End If End Sub
[/vba]
А так не разрешает вводить пробел после 3-го слова [vba]
Код
Private Sub TextBox1_Change() TextBox1 = Replace(TextBox1.Text, " ", " ") If UBound(Split(TextBox1.Text)) = 3 Then If Right(TextBox1.Text, 1) = " " Then TextBox1.Text = Left(TextBox1.Text, Len(TextBox1.Text) - 1) End If End Sub
А не лучше ли не ограничиваться количеством слов, а просто применить к введённому тексту стандартную функцию листа СЖПРОБЕЛЫ, которая удалит ВСЕ лишние пробелы после окончания ввода? Не помню точно, когда какое событие возникает, поэтому написал для обоих: [vba]
Код
Private Sub TextBox1_Exit() Me.TextBox1.Text = Application.Trim(Me.TextBox1.Text) End Sub
Private Sub TextBox1_LostFocus() Me.TextBox1.Text = Application.Trim(Me.TextBox1.Text) End Sub
[/vba]Если не лень, то поставьте BreakPoint на обоих и выясните, кто из них вызывается. Кажется (но не точно) Exit возникает у TextBox, размещённого на форме, а LostFocus - на листе.
А не лучше ли не ограничиваться количеством слов, а просто применить к введённому тексту стандартную функцию листа СЖПРОБЕЛЫ, которая удалит ВСЕ лишние пробелы после окончания ввода? Не помню точно, когда какое событие возникает, поэтому написал для обоих: [vba]
Код
Private Sub TextBox1_Exit() Me.TextBox1.Text = Application.Trim(Me.TextBox1.Text) End Sub
Private Sub TextBox1_LostFocus() Me.TextBox1.Text = Application.Trim(Me.TextBox1.Text) End Sub
[/vba]Если не лень, то поставьте BreakPoint на обоих и выясните, кто из них вызывается. Кажется (но не точно) Exit возникает у TextBox, размещённого на форме, а LostFocus - на листе.Alex_ST
С уважением, Алексей MS Excel 2003 - the best!!!
Сообщение отредактировал Alex_ST - Вторник, 17.05.2016, 09:24