Word VBA: Как узнать высоту и ширину ячейки, в которой находится курсор

Автор Anton, 07 декабря 2016, 14:17

Anton

Добрый день! Подскажите пожалуйста команду, которая сообщит, какая высота и ширина ячейки таблицы, в которой в данный момент находится курсор.

Администратор

Ширину всегда можно так узнать:
Макрос
Sub Макрос()

    Dim cel As cell
   
    '1. Vba-именование ячейки, в которой находится курсор.
    Set cel = Selection.Cells(1)
    '2. Ширина ячейки. Вывод в View - Immediate Window.
    Debug.Print cel.Width
   
End Sub
[свернуть]

А вот высоту можно узнать только если высота задана: щёлкните в ячейке правой мышью - Свойства таблицы... - вкладка "Строка" - здесь должна стоять галочка "высота". Если галочка стоит, то можно использовать такой код:
Макрос
Sub Макрос()

    Dim cell As cel
   
    '1. Vba-именование ячейки, в которой находится курсор.
    Set cel = Selection.Cells(1)
    '2. Высота и ширина ячейки. Вывод в View - Immediate Window.
    Debug.Print cel.Height
   
End Sub
[свернуть]
Если галочка не стоит, то для этого случая у ворда нет инструментов, чтобы узнать высоту строки. Возможно высоту можно узнать каким-нибудь обходным способом, но это наверное сложно, т.к. строка может быть разделена на несколько страниц.

Width и Height возвращают ширину в пунктах. Чтобы перевести в сантиметры можно использовать это:
Debug.Print Application.PointsToCentimeters(cel.Width)

Кроме того, у объекта "Cell" есть и другие члены для работы с высотой и шириной:
HeightRule - позволяет выбрать "Минимум" или "Точно";
SetHeight - устанавливает высоту;
PreferredWidth - возвращает или устанавливает ширину. Может быть в пунктах или процентах, в зависимости от того, какие используются единицы измерения;
PreferredWidthType - возвращает или устанавливает, в каких единицах измерения работать с шириной: пунктах или процентах;
SetWidth - устанавливает ширину ячейки.

Anton

Большое спасибо за развернутый ответ! Познавательно!