Как вертикально центрировать текст в заголовке метки Excel?

В Excel 2007 я вставил метку ActiveX на свой рабочий лист. Я щелкнул его правой кнопкой мыши и просмотрел свойства, и мне удалось изменить свойство TextAlign на 2 (frmTextAlignCenter).

Это выравнивает текст заголовка метки по центру метки (горизонтально), но текст остается в ВЕРХУ этикетки. Как мне центрировать текст подписи ВЕРТИКАЛЬНО, чтобы он находился точно посередине этикетки?

Я искал «вертикальное выравнивание» в SO, но ничего не придумал, как это сделать для заголовка метки Excel.

Спасибо!


person phan    schedule 28.07.2011    source источник


Ответы (3)


Нет возможности сделать это напрямую. Однако в в этом сообщении есть умный способ сделать это. . Создайте 2 блока, внутренний размер которого автоматически изменится вокруг текста, и расположите этот внутренний блок в середине внешнего блока.

person jonsca    schedule 28.07.2011
comment
Хорошо, хорошо знать, что не было прямого способа сделать это. Я продолжал искать свойство, которое позволило бы мне изменить вертикальное выравнивание. Спасибо за вашу помощь jonsca! - person phan; 28.07.2011

Есть трюк, чтобы сделать это с одной меткой. Добавьте прозрачное изображение GIF размером 1 x 1 пиксель и задайте для свойства PictureAlignment значение PicturePositionLeftCenter.

person Larv    schedule 30.09.2014
comment
Не могу поверить, что я первый, кто проголосовал за это спустя 5 лет. Лучшее открытие дня. Спасибо @Larv. - person Jamie Garroch - MVP; 13.03.2019
comment
Это хорошо работало в пользовательской форме, создавая GIF размером 1x1 пиксель в Microsoft Paint. Я оставил PicturePosition как 7 — fmPicturePositionAboveCenter. Это ударило по тексту так, как я хотел. - person Mark E.; 21.07.2020

Вам придется использовать 2 этикетки.

Например, назовите их LabelBack, LabelFront. Для LabelFront должны быть установлены значения Opaque и No-Border. Сделайте высоту LabelFront меньше высоты LabelBack и поместите ее поверх нее более или менее.

Затем добавьте следующий код:

LabelFront.Top = (LabelBack.Top + (LabelBack.Height - LabelFront.Height) / 2) - 1

Обратите внимание, я вычел 1, чтобы компенсировать дополнительные 1 пикселя в LabelFront.

person YosiN    schedule 18.06.2016