При работе с базами данных, артикулами или ФИО в Excel часто требуется, чтобы все вводимые данные автоматически преобразовывались в верхний регистр. Стандартное форматирование ячеек не позволяет менять регистр «на лету», но эту задачу легко решить с помощью простого макроса VBA. Это сэкономит время и исключит человеческий фактор при ручном вводе.
Пошаговая настройка автоматического верхнего регистра
Чтобы текст автоматически становился заглавным сразу после ввода, мы используем событие изменения листа в VBA. Следуйте этой инструкции:
Шаг 1. Откройте редактор VBA
Нажмите комбинацию клавиш Alt + F11 на клавиатуре, чтобы открыть встроенный редактор Microsoft Visual Basic for Applications.
Шаг 2. Выберите нужный рабочий лист
В левой панели проекта (Project Explorer) найдите вашу книгу и дважды кликните по названию листа, на котором должен работать авторегистр (например, Лист1 (Sheet1)).
Шаг 3. Вставьте код макроса
В открывшееся пустое окно кода вставьте следующий скрипт:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim cell As Range
On Error Resume Next
If Not Intersect(Target, Range("A1:A100")) Is Nothing Then
Application.EnableEvents = False
For Each cell In Intersect(Target, Range("A1:A100"))
cell.Value = UCase(cell.Value)
Next cell
Application.EnableEvents = True
End If
End Sub Примечание: В коде указан диапазон A1:A100. Вы можете изменить его на любой другой, например, A:A для всего столбца.
Шаг 4. Сохраните книгу с поддержкой макросов
Закройте редактор VBA. Нажмите Ctrl + S и сохраните файл в формате Книга Excel с поддержкой макросов (*.xlsm). Если в будущем вам потребуется очистить файл от скриптов, изучите руководство: Как быстро удалить все макросы из книги Excel.
Частые ошибки / Устранение неполадок
Макросы отключены: Если при вводе ничего не происходит, убедитесь, что в параметрах Excel включен запуск макросов (Файл -> Параметры -> Центр управления безопасностью -> Параметры макросов).
Зацикливание или зависание: Строка Application.EnableEvents = False критически важна. Без нее изменение ячейки макросом снова вызовет этот же макрос, что приведет к бесконечному циклу.
Ошибки при поиске данных: Изменение регистра может повлиять на работу формул поиска. Если после изменения регистра ваши формулы перестали работать, прочитайте, как исправить ВПР выдает #Н/Д в Excel: Полное руководство.
Дополнительно: Альтернатива без макросов (Формула PROPPER/UPPER)
Если использование макросов нежелательно, вы можете использовать стандартную формулу =ПРОПИСН(ячейка) в соседнем столбце. Однако это не изменит текст в исходной ячейке в момент ввода. Также помните, что при работе с текстовыми функциями могут возникать лимиты, аналогичные тем, о которых мы писали в статье: ПОВТОР в Excel не работает с большим числом повторений: Решение.
Часто задаваемые вопросы
Можно ли сделать это без макросов в той же ячейке?
Нет, стандартными инструментами Excel изменить регистр на лету в той же ячейке без VBA невозможно. Формулы требуют создания вспомогательного столбца.
Будет ли макрос работать на мобильных устройствах?
Нет, мобильные версии Excel и Excel Online не поддерживают запуск VBA-макросов. Скрипт будет работать только в десктопной версии для Windows или macOS.








