【问题标题】:Scaling of font size with control size of a VBA user form control使用 VBA 用户表单控件的控件大小缩放字体大小
【发布时间】:2015-05-20 00:22:14
【问题描述】:

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

  • 在 Excel 2010 中的用户表单上创建一个宽度为 120、高度为 24、字体 Tahoma 16、标题为“abcdefghijklm”的选项按钮。
  • 复制 Button 并更改属性:Width 60、Height 12、Font Tahoma 8。现在缺少部分文本(字母 m)并且字母的底部不可见。

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

【问题讨论】:

  • 只是需要记住的其他内容。导致问题的并非总是解决方案。有时它是用户在 Windows 设置中选择的缩放比例(即 150% 或 200% 而不是 100%)。分辨率和缩放都需要不同的解决方案。

标签: vba excel


【解决方案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

注意:在解决这些问题时,它总是近似值,所以要四舍五入以适应

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-11-27
    • 1970-01-01
    • 2013-03-16
    • 2017-07-17
    • 2023-03-22
    • 1970-01-01
    • 2016-11-14
    • 2011-09-16
    相关资源
    最近更新 更多