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 无法在加载时禁用ms access用户窗体的所有字段_Ms Access_Vba_Ms Access 2010_Userform - Fatal编程技术网

Ms access 无法在加载时禁用ms access用户窗体的所有字段

Ms access 无法在加载时禁用ms access用户窗体的所有字段,ms-access,vba,ms-access-2010,userform,Ms Access,Vba,Ms Access 2010,Userform,我的用户表单上有很多控件,我想在加载时禁用除“登录按钮”和“转换日期”文本框之外的所有控件,因此我使用以下代码: Private Sub Form_Load() Call GetValues Me.WlcmLabel.Caption = "Hi " + GetUserName + " ! " Dim ctrl As Control For Each ctrl In Me.Controls ctrl.Enabled = False Next Me.ShiftDate.Enabled =

我的用户表单上有很多控件,我想在加载时禁用除“登录按钮”和“转换日期”文本框之外的所有控件,因此我使用以下代码:

Private Sub Form_Load()
Call GetValues
Me.WlcmLabel.Caption = "Hi " + GetUserName + " ! "

Dim ctrl As Control

For Each ctrl In Me.Controls
    ctrl.Enabled = False
Next
Me.ShiftDate.Enabled = True
Me.LoginBtn.Enabled = True
Set ctrl = Nothing
End Sub 
但这在加载时给了我一个错误,即“对象不支持此属性或方法”

只要用户单击登录按钮,所有控件都将被启用

我的代码会有什么错误

请询问是否需要其他信息。
谢谢大家!

请尝试锁定控件。我使用了下面的locked属性,但我使用每个控件的tag属性将其标识为可锁定。因此,您不想锁定的控件不会在tag属性中获得任何内容,因此不会锁定。对于您的应用程序,您可以翻转逻辑,因为您只想让两个控件保持解锁状态

For Each ctlCurr In Me.Controls
        If ctlCurr.Tag = "Lockable" Then
        ctlCurr.Locked = True
        End If
Next

请尝试锁定控件。我使用了下面的locked属性,但我使用每个控件的tag属性将其标识为可锁定。因此,您不想锁定的控件不会在tag属性中获得任何内容,因此不会锁定。对于您的应用程序,您可以翻转逻辑,因为您只想让两个控件保持解锁状态

For Each ctlCurr In Me.Controls
        If ctlCurr.Tag = "Lockable" Then
        ctlCurr.Locked = True
        End If
Next

你不能禁用标签控制,这就是为什么会出现错误。您必须检查控件的类型

 For Each ctrl In Me.Controls
    With ctrl
     a = TypeName(ctrl)
    Select Case .ControlType

        Case acLabel

        Case acEmptyCell

        Case Else
            ctrl.Enabled = False
    End Select
    End With


 Next ctrl

仅当它不是标签时才应用禁用。

您无法禁用标签控制,这就是错误出现的原因。您必须检查控件的类型

 For Each ctrl In Me.Controls
    With ctrl
     a = TypeName(ctrl)
    Select Case .ControlType

        Case acLabel

        Case acEmptyCell

        Case Else
            ctrl.Enabled = False
    End Select
    End With


 Next ctrl

仅当它不是标签时才应用禁用。

感谢对此的澄清,它没有给出任何错误,但也没有禁用任何内容。怎么办?@shivchhabra我已经编辑了上面的答案。检查上面的代码,告诉我它是否工作。感谢对此的澄清,它没有给出任何错误,但也没有禁用任何东西。怎么办?@shivchhabra我已经编辑了上面的答案。检查上面的代码并告诉我是否无效。你能出示你修改过的代码吗?我经常这样锁定控件,你有问题吗。嗯……当然,这是我在加载事件中使用的代码,
Dim ctlCurr作为我中每个ctlCurr的控件。如果ctlCurr.Tag=“可锁定”,则控制那么ctlCurr.Locked=True End If Next Me.ShiftDate.Enabled=True Me.LoginBtn.Enabled=True
除了LoginBtn和ShiftDate之外,您是否将所有控件的Tag属性都设置为Locked?好的,我知道了,它现在正在工作。但我仍然能够在txtbox中单击,但它不允许用户键入。但是我想让用户注意到这些字段是禁用的,它们只能单击一个按钮和一个txtbox,如果我只是将“ctlCurr.Locked=True”替换为“ctlCurr.Enabled=True”会怎么样?是的,这应该可以工作,但我认为您需要Enabled=False。我刚试过,禁用的控件是灰色的,不允许用户进入该字段。您能显示修改后的代码吗?我经常这样锁定控件,你有问题吗。嗯……当然,这是我在加载事件中使用的代码,
Dim ctlCurr作为我中每个ctlCurr的控件。如果ctlCurr.Tag=“可锁定”,则控制那么ctlCurr.Locked=True End If Next Me.ShiftDate.Enabled=True Me.LoginBtn.Enabled=True
除了LoginBtn和ShiftDate之外,您是否将所有控件的Tag属性都设置为Locked?好的,我知道了,它现在正在工作。但我仍然能够在txtbox中单击,但它不允许用户键入。但是我想让用户注意到这些字段是禁用的,它们只能单击一个按钮和一个txtbox,如果我只是将“ctlCurr.Locked=True”替换为“ctlCurr.Enabled=True”会怎么样?是的,这应该可以工作,但我认为您需要Enabled=False。我刚刚试过,禁用的控件是灰色的,不允许用户进入该字段。