我的数据库中有一个表单,它使用多个表单来生成PDF文档。我遇到的问题是,每次用户移动或复制数据库时,字体的大小都不再合适。
设置为Arial Narrow,Bold,16字体。要“解决”这个我只是以任何方式调整字体,所以如果我只是将字体设置回Arial Narrow,字体会恢复到合适的大小,即使字体大小没有改变。如果我将粗体关闭然后重新打开,则字体会恢复到正确的大小,即使在工具栏中它也不会从16字体更改。
显然,对于包含7个子表单的表单,这种解决方案是不合理的,因为我必须每隔几天执行一次。我知道我可以使用vba以编程方式解决这个问题,但是我觉得它应该不会开始。
我很抱歉,如果之前已经回答过这个问题,这个问题很难解释,更不用说在Google搜索了。
更新:
以下是我的代码哪种工作,我将这个设置在加载时发生,它修复了主窗体,然后你必须关闭窗体并再次打开它以使子窗体受到影响。我假设他们第一次被纠正但是有一段时间没有调整,直到重新加载表格。
我试图刷新,并在子窗体更新后重新绘制它们但是我似乎找不到自动生成方法的方法。此外,不仅仅是在移动数据库的时候,如果你关闭并打开数据库,那么表单的字体会再次变得过大。
Public Function FixFontSize(frm As Form)
On Error Resume Next
Dim ctl As Control
For Each ctl In frm.Controls
Select Case ctl.ControlType
Case acTextBox, acComboBox, acLabel, acCommandButton
ctl.FormName = "tahoma"
ctl.FontName = "arial narrow"
Case acSubform
Call FixFontSize(ctl.Name)
End Select
Next ctl
End Function
答案 0 :(得分:1)
我想到的最优雅的解决方案是编写一个循环遍历表单上的控件的函数,并使用FontSize
,FontName
等属性并将它们设置为您想要的
添加了一个循环遍历表单控件的简单示例。
Dim c As Control
For Each c In Me.Controls
If c.ControlType = acTextBox Or c.ControlType = acLabel Then
c.FontSize = 16
End If
Next
acTextBox
和acLabel
属于.Font
属性,但您应该可以根据自己的需要对其进行自定义。
还包括指向列出所有控件类型的MSDN链接。
http://msdn.microsoft.com/en-us/library/office/aa224135%28v=office.11%29.aspx