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

时间:2015-03-17 14:12:52

标签: excel vba excel-vba

我想在VBA用户表单显示在具有不同分辨率的屏幕上时调整其大小。似乎没有内置功能。 因此,使用一些代码将Top,Left,Width,Height和Font.Size与相同的因子相乘,比如说50%。但是,这会更改控件的外观:文本不再适合该区域。这与VBA代码无关,因为当您手动进行缩放时,您会得到相同的结果:

  • 创建一个选项按钮,其宽度为120,高度为24,字体为Tahoma 16,Caption" abcdefghijklm"在Excel 2010中的用户窗体上。
  • 复制按钮并更改属性:宽度60,高度12,字体Tahoma 8.现在缺少部分文本(字母m),字母底部不可见。

我想这是因为Control不仅包含标题文本,还包含选项按钮本身和一些边距?无论如何,我的问题是:如何计算字幕字体的最佳缩放因子。

1 个答案:

答案 0 :(得分:1)

使用Tahoma并不容易修复,所以不要使用它,而是使用单倍间距字体。

查找CHAR的宽度作为其pt的比率(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

按钮120px宽,上面有13个字符

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

按钮60px宽,上面有13个字符

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

注意:在处理这些问题时,它总是很接近