2011-03-25 73 views
1

我在QA中拥有相当大的Access应用程序。我收到了一些问题,如“一些标签粗体有些不是”,考虑到此应用程序的发展方式,这并不令人惊讶。我想编写一些运行一次的代码并设置控件属性,而不是在窗体打开时运行的代码来设置每个控件的属性。我可以做后者,但直到今天从未真正考虑过前者。在如此多的表单上只有很多标签,我想写一个循环遍历所有控件的函数,设置标签的字体重量并将其保存为该控件的值。使用VBA永久性影响ms访问控制属性

我很好通过控制循环,找到标签,但实际上设置属性并永久保存它,而不是在某些触发事件中进行操作,使我感到困惑。任何人都这样做?

在此先感谢您的帮助!

回答

3

我做到了这一部分是不合时宜的,所以你可能需要调整它。只需关闭所有表格并运行此过程即可。

预先警告:这会将您的标签的所有设为以粗体显示。大多数字体在粗体显示时会变得更宽,因此在执行此操作后可能需要调整表单布局。我强烈建议您在尝试之前备份.mdb。

Sub SetFormProperties() 
Dim ao As AccessObject, Frm As Form, Ctl As Control 

    For Each ao In CurrentProject.AllForms 
     If ao.IsLoaded Then 
      Debug.Print ao.Name; " skipped...form was already loaded" 
     Else 
      DoCmd.OpenForm ao.Name, acDesign 
      Set Frm = Forms(ao.Name) 

      '-------------------' 
      'Set properties here' 
      For Each Ctl In Frm.Controls 
       If Ctl.ControlType = acLabel Then 
        Ctl.FontWeight = 700 
        '---OR---' 
        Ctl.FontBold = True 
       End If 
      Next Ctl 
      '-------------------' 

      DoCmd.Close acForm, Frm.Name, acSaveYes 
     End If 
    Next ao 
End Sub 
+0

太棒了!非常感谢。这正是我需要的。 – 2011-03-25 13:18:28