Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/ms-access/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ms access 如何使用变量在Access窗体上引用字段?_Ms Access_Ms Access 2007_Vba_Ms Access 2010 - Fatal编程技术网

Ms access 如何使用变量在Access窗体上引用字段?

Ms access 如何使用变量在Access窗体上引用字段?,ms-access,ms-access-2007,vba,ms-access-2010,Ms Access,Ms Access 2007,Vba,Ms Access 2010,我在Access 2010表单上有20个文本框,称为[P101]到[P110],它指的是源表中的[P101]到[P110]字段。可能包含或不包含值,但如果不包含,我不希望看到它们。我在表中还有一个字段[UsedFields],它统计了有多少字段正在使用。在Form_Current中,我可以设置以下代码,但是否有一种方法可以为下一个循环设置一个变量来使用字段名? 目前的代码(有效但非常笨拙)是: 由于字段的数量设置为从10增加到100,我想使用一个变量来保存文本框名称,例如: Private Su

我在Access 2010表单上有20个文本框,称为[P101]到[P110],它指的是源表中的[P101]到[P110]字段。可能包含或不包含值,但如果不包含,我不希望看到它们。我在表中还有一个字段[UsedFields],它统计了有多少字段正在使用。在Form_Current中,我可以设置以下代码,但是否有一种方法可以为下一个循环设置一个变量来使用字段名? 目前的代码(有效但非常笨拙)是:

由于字段的数量设置为从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

这样的引用可能吗?

您可以使用字符串变量引用表单的
控件
集合中的项

Dim Ctrl作为控件
Dim CtrlName作为字符串
昏暗的柜台一样长
对于计数器=1到10
CtrlName=“P”计数器(&C)
设置Ctrl=Me.Controls(CtrlName)
如果计数器>Me.UsedFields,则
Ctrl.Visible=False
其他的
Ctrl.Visible=True
如果结束
下一个
顺便说一句,如果有意义的话,您可以使用一行来代替
If

Ctrl.Visible=Not(计数器>Me.UsedFields)

您可以使用字符串变量引用表单的
控件中的项

Dim Ctrl作为控件
Dim CtrlName作为字符串
昏暗的柜台一样长
对于计数器=1到10
CtrlName=“P”计数器(&C)
设置Ctrl=Me.Controls(CtrlName)
如果计数器>Me.UsedFields,则
Ctrl.Visible=False
其他的
Ctrl.Visible=True
如果结束
下一个
顺便说一句,如果有意义的话,您可以使用一行来代替
If

Ctrl.Visible=Not(计数器>Me.UsedFields)

谢谢HansUp,它工作得很好,节省了几百行代码。你是个明星。谢谢HansUp,它工作得很好,节省了几百行代码。你是个明星。
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