使用VBA永久影响ms访问控制属性

时间:2011-03-25 12:54:43

标签: ms-access vba access-vba

我在QA中有一个相当大的Access应用程序。我已经遇到了一些问题,比如“有些标签是粗体的,有些不是”,考虑到这个应用的发展方式,这并不奇怪。我想编写一些运行一次的代码并设置控件属性,而不是在窗体打开时运行的代码来设置每个控件的属性。我可以做后者但直到今天才从未真正考虑过前者。在这么多表格上有很多标签,我想编写一个循环遍历所有控件的函数,设置标签的字体粗细并将其保存为该控件的值。

我很好骑自行车通过控件,找到标签,但实际上设置属性并永远保存它,而不是做一些触发事件让我感到困惑。有人做过吗?

提前感谢您的帮助!

1 个答案:

答案 0 :(得分: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