为啥 Excel 2010 VBA 用户窗体文本框字体会根据框架的大小而变化?

Posted

技术标签:

【中文标题】为啥 Excel 2010 VBA 用户窗体文本框字体会根据框架的大小而变化?【英文标题】:Why does Excel 2010 VBA userform textbox font changes depending on size of frame?为什么 Excel 2010 VBA 用户窗体文本框字体会根据框架的大小而变化? 【发布时间】:2020-08-27 03:26:16 【问题描述】:

我有一个包含多个框架、标签和文本框的用户表单,全部设置为 Calibri Regular 大小 10 的默认字体。我注意到一个文本框中的字体与其他文本框中的字体不同;比默认的更苗条,头发更短,更浓密。我尝试在设计和运行时调整字体,弄乱框架的字体,并用新的文本框替换文本框,但似乎没有更正字体。

然后,意外地,我将文本框的位置向上移动了一点,字体自动更正了。诡异的。从那以后,我一直在玩弄文本框的位置和帧大小。这是我观察到的:

1) 字体大小取决于框架内的相对位置;文本框需要完全位于框架高度的前 50%,调整文本框位置或框架高度会影响字体。

2) 此问题适用于此用户窗体上的多个框架。

3) 此问题适用于标签和文本框。

4) 此问题不一致,不适用于所有文本框和标签;它只是第一帧中的文本框,第二帧中的标签,第三帧中没有字体问题。

我已经在设计模式下检查了所有框架、标签和文本框的属性,没有什么特别突出的。所有这些控件都具有相同的字体集。有没有人遇到过这个问题?这是一个已知的错误吗?

【问题讨论】:

看起来像不可预知的行为,至少我不知道任何文档MSForms如何根据其他控件的垂直/水平排列在内部计算大小;参考文献评论Userform text of same font size changes size based on top property。我会尝试调整与字体相关的高度加上至少 2 个点并使用足够的宽度;可能disponible帧大小也是一个限制因素:-) 我很好奇 - 您如何创建受影响的控件?它们是在设计时存在还是在运行时添加和/或操作(不包括您说您尝试在设计和运行时调整字体)? 作为回报的问题:您如何创建受影响的控件?我很遗憾没有针对此问题的专利补救措施,只是说“我(将)会尝试……”。当然,您可以尝试在运行时测试各种尺寸变化,但您能否成功获得完美的结果甚至是某种诊断,这是值得怀疑的。 - 也许值得赏金? @SamuelEverson,现有控件是在设计时创建的。我没有在运行时创建任何控件,但是这个问题对于完成项目来说是一个低优先级。我在谷歌搜索时更改了几次措辞,并且我在其他网站上发现了一些描述相同问题的论坛帖子,但这些人也没有答案。在这一点上,我想我不得不把它当作一个奇怪的烦恼......¯_( " 3 )_/¯ @T.M.嘿嘿,这是我昨天发现的帖子!看起来他们有我发现的相同问题,也没有解决方案大声笑。我想我在回复塞缪尔时回答了你的问题。另外,我喜欢你关于赏金的想法,但我的帐户还很新,所以我需要节省声望。 【参考方案1】:

与@SquirrelBait 相同 - 我也发现字体的显示大小在外观上会发生变化,具体取决于它在我的用户窗体上的位置(在设计时创建 - Excel 2016)。 这发生在多页面中,但可能不相关。

虽然我没有解决方案,我可能有一个可能的解决方法

问题似乎只发生在表单控件(标签、文本框、组合框)的高度不是整数值的情况下。我自动调整了一些控件的大小,因此它们的高度分别为 14.25、28.5、20.25 等。我已将所有高度增加到整数值。现在问题似乎已经解决了

【讨论】:

【参考方案2】:

我也成功地将我的文本框高度从 17.5 更改为 18。在我的情况下,我还让它们稍微重叠(以创建表格效果),尽管它们是 18 字体,但仍然导致它们的文本大小稍大.在我将其更改为一个底部是另一个顶部之后,现在一切似乎都工作正常。

【讨论】:

以上是关于为啥 Excel 2010 VBA 用户窗体文本框字体会根据框架的大小而变化?的主要内容,如果未能解决你的问题,请参考以下文章

如何在VBA中的用户窗体上使用组合框和文本框来搜索和查找活动Excel电子表格中的数据?

Excel VBA入门用户窗体开发

VBA一例:如何保持文本框焦点

Excel VBA,如果一个或多个文本框为空,如何禁用命令按钮

根据单选按钮选择组合(VBA Excel)用可变文本填充文本框

单击保存按钮后如何在用户窗体中添加依赖于另一个组合框的excel vba组合框而不影响清除数据功能