Если вы разрабатываете лист для использования другими, вы можете захотеть, чтобы они всегда вводили информацию в верхнем регистре. Excel предоставляет функцию рабочего листа, которая позволяет преобразовывать информацию в верхний регистр, но она не применяется, поскольку люди фактически вводят информацию. Например, если кто-то вводит информацию в ячейку B6, то функцию рабочего листа нельзя использовать для преобразования информации из B6 в верхний регистр.

Вместо этого вы должны использовать макрос для внесения изменений за вас. При программировании на VBA вы можете заставить Excel запускать определенный макрос всякий раз, когда что-либо изменяется в ячейке листа. Следующий макрос можно использовать для преобразования всего ввода листа в верхний регистр:

Private Sub Worksheet_Change(ByVal Target As Range)

If Target.HasFormula Then Exit Sub         Application.EnableEvents = False         Target = UCase(Target.Cells(1))

Application.EnableEvents = True End Sub

Однако для того, чтобы макрос работал, он должен быть введен в определенном месте.

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

  1. Откройте редактор VBA, нажав Alt + F11.

  2. В окне «Проект» в левой части редактора дважды щелкните имя рабочего листа, который вы используете. (Вам может потребоваться сначала открыть папку VBAProject, а затем открыть в ней папку Microsoft Excel Objects.)

  3. В окне кода для рабочего листа вставьте указанный выше макрос.

  4. Закройте редактор VBA.

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

Private Sub Worksheet_Change(ByVal Target As Range)

If Not (Application.Intersect(Target, Range("A1:B10")) _       Is Nothing) Then         With Target             If Not .HasFormula Then                 Application.EnableEvents = False                 .Value = UCase(.Value)

Application.EnableEvents = True             End If         End With     End If End Sub

В этом конкретном примере будет преобразован только текст, введенный в ячейки A1: B10; все остальное останется как введено. Если вам нужно преобразовать другой диапазон, укажите этот диапазон во второй строке макроса.

_Примечание: _

Если вы хотите узнать, как использовать макросы, описанные на этой странице (или на любой другой странице на сайтах ExcelTips), я подготовил специальную страницу, содержащую полезную информацию.

link: / excelribbon-ExcelTipsMacros [Щелкните здесь, чтобы открыть эту специальную страницу в новой вкладке браузера].

ExcelTips — ваш источник экономичного обучения Microsoft Excel.

Этот совет (9813) применим к Microsoft Excel 2007, 2010, 2013, 2016, 2019 и Excel в Office 365. Вы можете найти версию этого совета для более старого интерфейса меню Excel здесь:

link: / excel-Forcing_Input_to_Uppercase [Принуждение ввода к верхнему регистру].