MS Access:通过VBA

时间:2017-03-23 21:59:38

标签: ms-access access-vba

我希望创建一个单独的VBA子过程来更改多个主窗体的所有子窗体的.enabled.allowedit属性。我的想法是我有一个子程序,可以通过我的应用程序中任何表单上的按钮调用。

单击按钮设置我用来引用按钮所在的主要表单的变量。我目前在.enable部分工作,但是我一直收到关于.allowedits属性的错误。下面是我使用的代码。我得到的错误是

  

Object不支持此属性或方法

仅在.allowedits行运行后才会发生。任何帮助将非常感谢。谢谢!

cmdbutton_on_click_event

Private Sub cmdEditAll_Click()
strFormName = Me.Name

Call ToggleEdit

end sub

被称为Subprocedure:

Option Compare Database
Public strFormName As String
Sub ToggleEdit()
Dim ctrlControl As Control


On Error GoTo err:
For Each ctrlControl In Forms(strFormName).Controls
    Debug.Print ctrlControl.Name
    If booEnabled = False Then
        Forms!frmfullcourseinfo.cmdEditAll.Caption = "Edit"
        Forms!frmfullcourseinfo.lblMode.Caption = "[Read Only]"
        If ctrlControl.ControlType = acTabCtl Or ctrlControl.Name = "Command9" Or ctrlControl.Name = "cmdeditall" Then
        Else
        ctrlControl.Enabled = False
        ctrlControl.AllowEdits = False
        End If

    Else
        Forms!frmfullcourseinfo.cmdEditAll.Caption = "Stop Edit"
        Forms!frmfullcourseinfo.lblMode.Caption = "[Edit Mode]"
        If ctrlControl.ControlType = acTabCtl Or ctrlControl.Name = "Command9" Or ctrlControl.Name = "cmdeditall" Then
        Else
        ctrlControl.Enabled = True
        ctrlControl.AllowEdits = True
        End If
    End If
Continue:
Next

booEnabled = Not (booEnabled)
Exit Sub
err:
    Debug.Print err.Description
    Resume Continue
End Sub

1 个答案:

答案 0 :(得分:1)

我总是给子窗体容器控件一个与它所拥有的对象不同的名字,比如ctrOrders。子窗体容器控件没有AllowEdits属性,窗体是do,所以必须引用容器所持有的窗体对象。

ctrlControl.Form.AllowEdits = False

所以这可行:

s