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

VBA Excel. Автоподбор ширины объединенной ячейки

    Автоподбор ширины объединенной ячейки с помощью кода VBA Excel, когда метод AutoFit не работает. Обработка ячеек по списку адресов из массива.

    Автоподбор ширины ячейки

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

    Здесь мы рассмотрим макрос для автоподбора ширины ячейки, объединенной с другими по горизонтали в одной строке, которые обычно используются в заголовках электронных таблиц Excel. Ширина столбцов, пересекающихся с объединенной ячейкой, будет одинаковой. Код работает и с необъединенными ячейками.

    Для решения задачи по автоподбору ширины необходимо с помощью кода VBA определить:

    1. Длину текста (количество символов). Длина одного символа текста со шрифтом и его размером по умолчанию приблизительно соответствует длине символа, в котором измеряется ширина ячейки.
    2. Размер шрифта, чтобы рассчитать коэффициент, увеличивающий или уменьшающий ширину ячейки в зависимости от его (шрифта) размера.
    3. Количество столбцов в объединенной ячейке, чтобы вычислить ширину одного столбца.

    Макрос VBA Excel для автоподбора ширины ячейки с учетом размера используемого шрифта:

    Переменные:

    • myCell — отдельная ячейка в объединенной;
    • myLen — длина текста в активной ячейке;
    • myCount — количество столбцов, которое соответствует количеству горизонтально расположенных отдельных ячеек в объединенной;
    • k — коэффициент, вносящий поправку в зависимости от размера шрифта;
    • n — размер шрифта по умолчанию.*

    * У меня по умолчанию установлен шрифт Calibri размером 11, поэтому n = 11. Если у вас по умолчанию Arial размером 10, тогда и в коде укажите n = 10. Далее подкорректируйте значение переменной n опытным путем, так как длина текста зависит от процентного соотношения широких и узких символов, если шрифт не моноширинный. Переменной n можно присваивать и дробные значения для более точного автоподбора.

    Данный код VBA Excel работает с выделенной ячейкой. Вы можете задать список адресов объединенных ячеек и пройтись макросом по каждой из них.

    Обработка списка ячеек

    Укажите список объединенных ячеек в качестве аргументов функции Array. Для списка используйте адреса только первых ячеек из состава объединенных. Можно добавлять в список и адреса одиночных ячеек.

    Переменные:

    • myCell — массив со списком адресов объединенных ячеек;
    • myElem — используется как элемент массива myCell.

    Макрос ObkhodYacheyek по адресам из списка обращается к каждой ячейке по очереди, выделяет ее и запускает код автоподбора ширины PodborShiriny.

    Если выделить диапазон объединенных и необъединенных ячеек по одной, удерживая клавишу Ctrl, то запустить код автоподбора ширины можно с помощью следующего макроса:


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

    2 комментария для “VBA Excel. Автоподбор ширины объединенной ячейки”

    1. Алексей

      Здравствуйте, Евгений. А про автоподбор высоты строки объединенных ячеек есть у вас статья? А то каждый раз высоту строки вручную корректирую при разных длинах текста.

    Обсуждение закрыто.