Макрос Excel для всего столбца в верхний регистр


Я пытаюсь обновить книгу, мне нужно изменить все письма со строчного на верхний регистр. Я еще не настолько хорошо разбираюсь в макросах, но я придумал этот, но чтобы запустить его, требуется вечность. (только около ~1K строк).

Sub Uppercase()
   ' Loop to cycle through each cell in the specified range.
   For Each x In Range("B:B")
      ' Change the text in the column to uppercase letters.
      x.Value = UCase(x.Value)
   Next
End Sub

Есть ли что-то лучшее, что я должен использовать?

Tl; dr мне нужно изменить весь регистр столбцов на верхний регистр.

4 2

4 ответа:

Не нужен цикл вообще, это должно заботиться о нем в основном мгновенно:

Sub tgr()

    With Range("B1", Cells(Rows.Count, "B").End(xlUp))
        .Value = Evaluate("INDEX(UPPER(" & .Address(External:=True) & "),)")
    End With

End Sub

Сделайте весь диапазон сразу:

Range("B:B") = [index(Upper(B:B),)]

Попробуйте вместо этого. Вы проходите через каждую ячейку в столбце B, поэтому он медленный.

Sub Uppercase()
   ' Loop to cycle through each cell in the specified range.
   For Each x In Range("B1:B" & Range("B" & Rows.Count).End(xlUp).Row))
      ' Change the text in the column to uppercase letters.
      x.Value = UCase(x.Value)
   Next
End Sub

Хорошо, но использование такой функции на выборке гораздо более удобно для пользователя: (Примечание: может ли кто-нибудь исправить это редактирование!!!)

Sub ToUpper() Для каждой ячейки в выделении Если не клетка.HasFormula Тогда ячейка.Значение = UCase (ячейка.Значение) Конец, Если Следующий Конец Sub