2013-12-09 40 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

相关问题