Каковы единицы ширины и высоты формы в VBA?

Я программирую 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?


person Robin Rodricks    schedule 28.02.2010    source источник


Ответы (2)


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

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

Function nTwipsFromPixelsX(ByVal nPixels As Long) As Long
  nTwipsFromPixels = TwipsPerPixelX() * nPixels
End Function
person MarkJ    schedule 28.02.2010

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

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

person Philippe Grondier    schedule 28.02.2010