Перейти к содержимому
Наше приложение «Дешевые авиабилеты» в AppGallery >>

VBA Excel. Числовой или буквенный код столбца

    Как узнать числовой или буквенный код столбца на рабочем листе Excel с помощью VBA? Числовой или буквенный индекс столбца активной ячейки.

    Зачем это нужно?

    Довольно часто при написании кода VBA Excel нужно знать, какому буквенному обозначению соответствует числовой код столбца (или наоборот). Вручную считать числовой индекс неудобно, а буквенный определить у отдалённых столбцов практически невозможно.

    Ручное переключение стиля ссылок

    Самый простой, но и самый неудобный вариант — это ручное переключение стиля ссылок.

    По умолчанию Excel использует стиль «A1»: столбцы обозначаются буквами (A, B, C… AA, AB…), строки — числами.

    В настройках можно включить стиль «R1C1», где и столбцы, и строки пронумерованы. Этот режим часто используется при программировании на VBA, так как он упрощает индексацию ячеек (через свойство .Cells) и циклические вычисления.

    Как переключить стиль ссылок в Excel?
    «Файл» → «Параметры» → «Формулы» → раздел «Работа с формулами» → снять/поставить галочку «Стиль ссылок R1C1».

    Неудобство ручного переключения стиля заключается не только в нескольких манипуляциях с мышью, но и в невозможности одновременно видеть и буквенный, и числовой код столбца. Этих недостатков лишено программное преобразование буквенного индекса в числовой (и наоборот) с помощью кода VBA Excel.

    Программное преобразование индекса

    Код VBA Excel для преобразования буквенного кода столбца в числовой, и наоборот:

    Код преобразования числа в буквенный индекс, для наглядности, вынесен в отдельную функцию.

    Результат работы кода, если включён стиль ссылок «A1»:

    Числовой код столбца - аналог буквенного

    Результат работы кода, если включён стиль ссылок «R1C1»:

    Буквенный код столбца - аналог числового

    Как работает код?

    Строка/Блок Назначение
    colNum = ActiveCell.Column Получает числовой индекс столбца текущей ячейки (всегда от 1 до 16384)
    Application.ReferenceStyle = xlR1C1 Проверяет, включён ли стиль R1C1. Возвращает True или False
    GetColumnLetter() Реализует перевод десятичного номера в 26-ричную систему с использованием символов A-Z. Корректировка colNum = colNum - 1 нужна, потому что в Excel нет «нулевого» столбца
    MsgBox … Выводит всплывающее окно с результатом

    Для того, чтобы можно было скопировать результат преобразования и вставить в создаваемый код VBA Excel, замените MsgBox на Debug.Print. Тогда результат будет выведен в окно отладки Immediate.


    Содержание рубрики VBA Excel по тематическим разделам со ссылками на все статьи.