VBA: первые буквы в TextBox заглавные

Автор Илья, 02 июля 2014, 17:01

Илья

В TextBox вводится фамилия имя отчество (полностью). Иногда можно не уследить за регистром и, например, можно указать имя человека с маленькой буквы. Так вот, как будет выглядеть код, который бы исправлял первую  букву на заглавную?

Администратор

Илья, чтобы код не усложнять, можно попробовать изменять данные при нажатии кнопки.
На вашей форме есть кнопка, которую нажимают в какой-то момент?

Например, на форме может быть текстбокс и кнопка. Пользователь вводит данные в текстбокс. Данные могут быть неправильные. Затем пользователь нажимает кнопку и данные, введённые в текстбокс, изменяются.

Возможна у Вас такая ситуация?

Илья


Администратор

Этот код просто показывает принцип и вам нужно приспособить этот код в свой код.

Private Sub CommandButton1_Click()
   
    Dim strText As String
   
   
    strText = UCase(Left(Me.TextBox1.Text, 1)) & Mid(Me.TextBox1.Text, 2)
   
    'Здесь в переменной "strText" получается текст в правильном виде,
        'который можно передать туда, куда нужно.
   
End Sub

Илья

Код изменяет заглавную букву только в первом слове.
Было: иванов иван иванович, стало: Иванов иван иванович.
Нужно, чтобы первая буква изменялась у всех слов.

Администратор

Илья, предыдущий код подразумевал, что в текстбоксе будет только одно слово.
Вот код, который работает с несколькими словами. В коде показан только принцип, и вам нужно приспособить код под свой код.

Код

Private Sub CommandButton1_Click()
   
    'Делаем у переменной тип данных "Variant", чтобы
        'переменную можно было превратить в VBA-массив.
    Dim varText As Variant
    Dim i As Long
   
   
    'Взятие данных из текстбокса в переменную "varText".
    varText = Me.TextBox1.Text
   
    'Разбиваем данные на слова по пробелам.
    varText = Split(varText, " ")
   
    'Изменение первой буквы во всех словах.
        'Нумерация элементов в массиве "varText" начинается с нуля.
    For i = 0 To UBound(varText) Step 1
        varText(i) = UCase(Left(varText(i), 1)) & Mid(varText(i), 2)
    Next i
   
    'Соединие слов в одну строку и помещение результата обратно
        'в переменную "varText".
    varText = Join(varText, " ")
   
    'Здесь в переменной "varText" получается текст в правильном виде,
        'который можно передать туда, куда нужно.
   
End Sub
[свернуть]

Илья