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