使用VBA用户表单控件的控件大小缩放字体大小

我想在不同分辨率的屏幕上显示VBA用户表单的大小。 这似乎没有一个内置的function。 因此,使用一些将Top,Left,Width,Height和Font.Size乘以相同因子(如50%)的代码。 但是,这会改变控件的外观:文本不再适合该区域。 这与VBA代码没有任何关系,因为在用手进行缩放时,你会得到相同的结果:

  • 在Excel 2010的用户窗体上创build宽度为120,高度为24,字体为Tahoma 16,标题为“abcdefghijklm”的选项button。
  • 复制button并更改属性:宽度60,高度12,字体Tahoma 8.现在部分文本丢失(字母m),字母的底部不可见。

我猜这是因为控件不仅包含标题文本,还包含选项button本身和一些边距? 无论如何,我的问题是:如何计算字幕字体的最佳比例因子。

这不太容易使用Tahoma修复,所以不要使用它,而是使用单间隔字体。

find一个CHAR的宽度作为其比例(6,7,8,10,12,14,16等)

Dejavu Sans Mono的比例似乎约为1.8

然后使用

(width of button - margins) / len(text) = width of letter width of letter * ptToFontRatio = pt size 

button120px宽,13个字符如上

 (120-9)/13 = 8.53 8.53 * 1.8= 15.3 = closest smaller pt = 14pt 

button60px宽,13字符如上

 (60-9)/13 = 3.92 3.92 * 1.8 = 7.056 - closest smaller pt = 7pt 

注意:在将这些事情合理化的时候,总是会大概的