2017-05-09 61 views
0

我在Microsoft Access中有一個數據庫,我設計了一個前端。大約有35個表單/子表單,因此有數百個控件。我有整個前端的審計結構,但它需要爲每個文本框控件添加一個標記。給一個給定類型的多個控件分配一個標籤

有沒有簡單的方法來做到這一點?否則,它會非常手動,乏味和耗時。我寧願寫一些代碼,它會自動完成爲所有文本框控件設置標籤的過程。

+0

該標籤只是一個像所有控件的「tag_name」字符串? –

+0

代碼可以在Forms集合中循環,在設計視圖中打開,循環遍歷Controls集合,設置Tag屬性,關閉並保存表單。你想爲所有控件(標籤,子表單,行等)設置標籤嗎?當你開發有問題的代碼時,發佈一個問題。無論這是否只是「一點點代碼」和更容易取決於你的編程技巧。像Rick Fisher的Find and Replace這樣的第三方工具也許能夠完成。成本約35美元。 – June7

回答

0

您可以在一個單一的形式使用下面的代碼:

Public Sub AssignTag() 
    Dim control As Variant 
    For Each control In Me.Controls 
     If control.ControlType = acTextBox Then 
      control.Tag = "MyTag" 
     End If 
    Next 
End Sub 

然後,你必須打開佈局視圖的形式,改變的東西,保存表單,並可能改回事情,使更改棒(使用VBA更改控件不會持續,除非您在佈局視圖中進行額外更改)。

0

循環通過AllForms,在設計模式下打開每個Form,設置標籤爲全部TextBox控件,保存並退出。

Public Sub SetControlsTag() 
    On Error GoTo ErrProc 

    Dim obj As AccessObject, frm As Form, ctl As Control 

    For Each obj In CurrentProject.AllForms 

     'Open in design mode 
     DoCmd.OpenForm CurrentProject.AllForms(obj.Name).Name, acDesign 
     Set frm = Forms(obj.Name) 

     'Set tags 
     For Each ctl In frm.Controls 
      If ctl.ControlType = acTextBox Then ctl.Tag = "Whatever..." 
     Next ctl 

     'Close 
     DoCmd.Close acForm, frm.Name, acSaveYes 
     Set frm = Nothing 
    Next obj 

Leave: 
    Set frm = Nothing 
    On Error GoTo 0 
    Exit Sub 

ErrProc: 
    MsgBox Err.Description 
    Resume Leave 
End Sub 
相關問題