Len помогает проверить длину строки, а Chr и Asc работают с символьными кодами. Для Unicode в Windows VBA полезны ChrW и AscW.

Посмотрим длину «АБ», код первой буквы и обратное получение символа.

Что подготовить

На листе «Проверка» подготовьте поля Проверка и Результат. A2:B4 будут заняты учебными значениями.

Пример использует кириллицу в Windows. Не подменяйте Unicode-коды кодами текущей ANSI-страницы: это разные способы представления символов.

Код и порядок выполнения

Option Explicit
Sub InspectCharacters()
    Dim ws As Worksheet
    Dim s As String
    Set ws = ThisWorkbook.Worksheets("Проверка")
    s = "АБ"
    ws.Range("A2").Value = "Len"
    ws.Range("B2").Value = Len(s)
    ws.Range("A3").Value = "AscW первой буквы"
    ws.Range("B3").Value = AscW(Left$(s, 1))
    ws.Range("A4").Value = "ChrW(1040)"
    ws.Range("B4").Value = ChrW(1040)
End Sub

Для выбранной строки Len равно 2, AscW буквы А — 1040. ChrW(1040) выполняет обратное действие и даёт «А». Латинская A имеет другой код.

Для переносов и табуляции удобнее именованные константы vbCrLf и vbTab. Они делают назначение символа понятнее, чем случайное число в середине длинной команды.

Учебный код: Len, Chr и Asc в VBA: длина и коды символов.
Учебный код: Len, Chr и Asc в VBA: длина и коды символов.

Как проверить результат

Ожидаемые результаты: длина 2, код 1040 и кириллическая буква А.
Ожидаемые результаты: длина 2, код 1040 и кириллическая буква А.

Ожидаемые результаты: длина 2, код 1040 и кириллическая буква А.

Ограничения и частые ошибки

Asc и Chr зависят от правил символьного представления среды; Unicode-варианты нужны не как косметическая замена, а для выбранной задачи. Для символов за пределами основной плоскости Unicode одна видимая буква или эмодзи может занимать несколько кодовых единиц.

Не считайте Len универсальным количеством визуальных знаков для любой строки. Для обычных русских букв в данном примере результаты однозначны. AscW также может возвращать знаковое значение для части диапазона кодов.

Перед AscW проверьте, что строка непустая: у отсутствующего первого символа нельзя получить код тем же выражением. Ошибку ячейки проверяйте до CStr.

Проверка перед рабочим запуском

  • Кириллическая А отличается от латинской A.
  • Непустая строка проверяется до AscW.
  • Табуляция обозначена vbTab.
  • Длина и число видимых знаков не смешиваются.

Сначала выполните пример на учебной копии с указанными именами листов и диапазонами. Сравните исходные данные и результат, затем сохраните проверенный вариант процедуры.

Продолжить изучение: Left, Right и Mid в VBA: как извлечь часть текста, Replace в VBA: замена текста и неразрывного пробела, Split в VBA: разделение строки на элементы.

Разберитесь с макросами вместе с преподавателем

На занятии вы записываете действия, читаете код и проверяете результат на небольшом примере. Преподаватель подберёт задания под ваш уровень и поможет понять связь между командами VBA и изменениями в книге.

Начните с бесплатного вводного урока: 45 минут, один на один, без обязательств. Обсудите цель и попробуйте формат. Решение о продолжении — после занятия.

Записаться на бесплатный урок