2013-12-09 68 views
1

我在Access 2010表單上有20個文本框,稱爲[P101]到[P110],它引用源表中的字段[P101]到[P110]。可能包含或不包含值,但如果不是,我不想看到它們。我在表格中還有一個字段[UsedFields],用於統計有多少個字段正在使用中。在Form_Current中,我可以設置下面的代碼,但是有沒有一種方法可以設置FOR NEXT循環來爲字段名稱使用變量? 當前的代碼(這工作,但很笨拙)是:Access窗體上的引用字段如何使用變量?

If UsedFields > 0 then 
    P101.Visible = True 
Else 
    P101.Visible = False 
End If 
If UsedFields > 1 then 
    P102.Visible = True 
Else 
    P102.Visible = False 
End If 
. 
. 
. 
. 
If UsedFields > 9 then 
    P110.Visible = True 
Else 
    P110.Visible = False 
End If 

由於字段的數量設置爲10〜100我想用一個變量來保存文本框的名稱增加,是這樣的:

Private Sub Form_Current() 
    Dim Ctrl As Control 
    Dim CtrlName As String 
    Dim Counter As Long 

    For Counter = 1 To 10 
     CtrlName = "P" & Counter 
     Set Ctrl = CtrlName 
    If Counter > Me.UsedFields Then 
     Ctrl.Visible = False 
    Else 
     Ctrl.Visible = True 
    End If 
End Sub 

這樣的參考可能嗎?

回答

3

您可以使用您的字符串變量來引用表單的Controls集合中的項目。

Dim Ctrl As Control 
Dim CtrlName As String 
Dim Counter As Long 

For Counter = 1 To 10 
    CtrlName = "P" & Counter 
    Set Ctrl = Me.Controls(CtrlName) 
    If Counter > Me.UsedFields Then 
     Ctrl.Visible = False 
    Else 
     Ctrl.Visible = True 
    End If 
Next 

順便說一句,你可以代替If塊使用單一行,如果這是很有意義的。

Ctrl.Visible = Not (Counter > Me.UsedFields) 
+0

感謝HansUp,它工作完美,並保存了幾百行代碼。你是個明星。 – user3083607

相關問題