Форум по VBA, Excel и Word

VBA, Excel => VBA, макросы в Excel => Тема начата: Илья от 02 июля 2014, 17:01

Название: VBA: первые буквы в TextBox заглавные
Отправлено: Илья от 02 июля 2014, 17:01
В TextBox вводится фамилия имя отчество (полностью). Иногда можно не уследить за регистром и, например, можно указать имя человека с маленькой буквы. Так вот, как будет выглядеть код, который бы исправлял первую  букву на заглавную?
Название: Re: VBA: первые буквы в TextBox заглавные
Отправлено: Администратор от 02 июля 2014, 17:08
Илья, чтобы код не усложнять, можно попробовать изменять данные при нажатии кнопки.
На вашей форме есть кнопка, которую нажимают в какой-то момент?

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

Возможна у Вас такая ситуация?
Название: Re: VBA: первые буквы в TextBox заглавные
Отправлено: Илья от 03 июля 2014, 10:42
Есть такая кнопка.
Название: Re: VBA: первые буквы в TextBox заглавные
Отправлено: Администратор от 03 июля 2014, 10:55
Этот код просто показывает принцип и вам нужно приспособить этот код в свой код.

Private Sub CommandButton1_Click()
   
    Dim strText As String
   
   
    strText = UCase(Left(Me.TextBox1.Text, 1)) & Mid(Me.TextBox1.Text, 2)
   
    'Здесь в переменной "strText" получается текст в правильном виде,
        'который можно передать туда, куда нужно.
   
End Sub
Название: Re: VBA: первые буквы в TextBox заглавные
Отправлено: Илья от 03 июля 2014, 11:32
Код изменяет заглавную букву только в первом слове.
Было: иванов иван иванович, стало: Иванов иван иванович.
Нужно, чтобы первая буква изменялась у всех слов.
Название: Re: VBA: первые буквы в TextBox заглавные
Отправлено: Администратор от 03 июля 2014, 11:41
Илья, предыдущий код подразумевал, что в текстбоксе будет только одно слово.
Вот код, который работает с несколькими словами. В коде показан только принцип, и вам нужно приспособить код под свой код.

Код

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
[свернуть]
Название: Re: VBA: первые буквы в TextBox заглавные
Отправлено: Илья от 03 июля 2014, 11:46
Идеально. Спасибо!