VBA Excel. Размер ячейки (высота строки, ширина столбца)

Изменение размера ячейки в VBA Excel. Высота строки, ширина столбца, автоподбор ширины ячейки. Свойства RowHeight и ColumnWidth объекта Range.

Размер ячейки

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

Обратите внимание, что высота строки задается в пунктах, а ширина столбца в символах, поэтому их числовые значения не соответствуют друг другу по фактическому размеру.

Информационные окна с высотой строки и шириной столбца в Excel

Высота строки и ширина столбца в Excel

Программно, без дополнительных макросов, можно изменять высоту строки только в пунктах, а ширину столбца только в символах.

На сайте поддержки офисных приложений Microsoft так написано об этих величинах:

  • высота строки может принимать значение от 0 до 409 пунктов, причем 1 пункт приблизительно равен 1/72 дюйма или 0,035 см;
  • ширина столбца может принимать значение от 0 до 255, причем это значение соответствует количеству символов, которые могут быть отображены в ячейке.

Высота строки

Для изменения высоты строки используйте свойство RowHeight объекта Range. И не важно, будет объект Range представлять из себя выделенный произвольный диапазон, отдельную ячейку, целую строку или целый столбец – высота всех строк, пересекающихся с объектом Range будет изменена после присвоения свойству RowHeight этого объекта нового значения.

Примеры изменения высоты строк:

Пример 1
Изменение высоты отдельной ячейки:

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

Пример 2
Изменение высоты строки:

в результате, третья строка рабочего листа приобретает высоту, равную 30 пунктам.

Пример 3
Изменение высоты ячеек заданного диапазона:

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

Пример 4
Изменение высоты ячеек целого столбца:

в результате, всем строкам рабочего листа будет назначена высота, равная 15 пунктам.

Ширина столбца

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

Примеры изменения ширины столбцов:

Пример 1
Изменение ширины отдельной ячейки:

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

Пример 2
Изменение ширины столбца:

в результате, третий столбец рабочего листа (столбец «C») приобретает ширину, равную 50 символам.

Пример 3
Изменение ширины ячеек заданного диапазона:

в результате, каждому из первых четырех столбцов рабочего листа будет задана ширина, равная 25 символам.

Пример 4
Изменение ширины ячеек целой строки:

в результате, всем столбцам рабочего листа будет назначена ширина, равная 35 символам.

Автоподбор ширины

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

Имейте в виду, что ширина столбца будет подогнана по расположенной в этом столбце ячейке с самым длинным содержимым. Например, если длина содержимого ячейки Cells(7, 5) будет превышать длину содержимого ячейки Cells(5, 5), то автоподбор ширины пятого столбца произойдет по содержимому ячейки Cells(7, 5), несмотря на то, что в строке кода указана другая ячейка.

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

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

9 комментариев для “VBA Excel. Размер ячейки (высота строки, ширина столбца)”

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

  2. Евгений, добрый день.
    Спасибо большое за ответ. Буду пробовать!
    С уважением,
    Павел.

  3. Добрый день!
    Подскажите, пожалуйста, возможно ли сделать подгон ширины ячейки, в зависимости от вводимых значений?
    К примеру, я расписываю некий процесс, в котором один процесс (ячейка) будет длиться 12 секунд, другой – 27 секунд, и т.д. Возможно ли сделать так, чтобы ячейка изменялась пропорционально вводимым значениям?

  4. Евгений (автор статьи)

    Добрый день, Сергей!
    Возможно, подойдет такой способ (все процедуры должны быть расположены в модуле листа):

    Для тестирования запускаем процедуру Primer.

  5. Спантомано.

    Добрый день.
    Подскажите, пожалуйста, возможно ли автоматическая подгонка высоты ячейки, если идёт объединение нескольких ячеек и перенос по словам.
    У меня есть выпадающий список, в котором объединенные ячейки и стоит галочка переносить по словам.
    В списке текст с одним предложением и 4мя.
    Автоматическая подгонка сокращает текст до первого предложения.
    С уважением,
    Спантомано.

    1. Евгений

      Добрый день, Спантомано!
      В объединенных ячейках метод Range.EntireRow.AutoFit не работает. Посмотрите решение подобной задачи здесь.

  6. Доброго времени суток.
    Сломал всю голову себе (самоучка)…
    Есть линейчатая диаграмма, данные берёт из динамической таблицы. Внося новые данные в таблицу график дополняется, но его размер не увеличивается. В моем случае нужно чтобы менялась высота. Я думал завязать высоту графика на высоту таблицы, но не представляю как. Помогите пожалуйста.

Добавить комментарий

Ваш комментарий будет опубликован после прохождения обязательной модерации. Исходящие ссылки не допускаются. Время модерации составит от нескольких минут до нескольких часов в зависимости от времени суток и занятости модератора. При добавлении в комментарий кода VBA Excel, вставьте перед его началом тег <pre> и по окончании кода </pre>.