Каковы единицы измерения ширины и высоты формы в VBA? - PullRequest
4 голосов
/ 28 февраля 2010

Я программирую VBA для Word 2007.

Я создал пользовательскую форму, размер которой мне нужно изменить с помощью скрипта.

Я заметил, что его не пикселей

 Me.Width = pixelW   // form appears about 20% larger than the pixel width

И это не твип либо

 Me.Width = (((1 / TwipsPerPixelX()) * pixelW)) / 1)  // form appears very small

Итак, как измеряются ширина и высота формы в Office 2007 VBA?

Ответы [ 2 ]

6 голосов
/ 28 февраля 2010

При манипулировании элементами управления в формах с помощью кода размеры по умолчанию в два раза (я полагаю, если вы измените свойство формы ScaleMode, вы можете выбрать использование другого модуля).

Ваша формула конверсии неверна (легко ошибиться). Попробуйте это, завернув в функцию, чтобы избежать дублирования кода с возможностью опечаток в каждом дубликате

Function nTwipsFromPixelsX(ByVal nPixels As Long) As Long
  nTwipsFromPixels = TwipsPerPixelX() * nPixels
End Function
5 голосов
/ 28 февраля 2010

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

Полагаю, это также относится к VBA для Word. Я бы посоветовал вам записать функции cmToTwips и TwipsToCm, чтобы преобразовать ваши меры

...