2017-03-23 77 views
0

複数のメインフォームのすべてのサブフォームの.enabledとプロパティを変更する単一のVBAサブプロシージャを作成したいと考えています。私のアプリケーションでは、どのフォームのボタンでも呼び出すことができるサブプロシージャが1つあります。MS Access:サブフォームの.enabledプロパティと.alloweditsプロパティをVBAで設定する

ボタンをクリックすると、ボタンが存在するメインフォームを参照するために使用する変数が設定されます。私は現在、.enable部分のために働いていますが、私は.alloweditsプロパティに関するエラーを受け取り続けています。以下は、私が使用しているコードです。私が手にエラーが

オブジェクトはこのプロパティまたはメソッド.allowedits行が実行された後、それが唯一の発生

をサポートしていませんです。どんな助けも非常に高く評価されるでしょう。ありがとうございました!

cmdbutton_on_click_eventサブプロシージャ呼び出さ

Private Sub cmdEditAll_Click() 
strFormName = Me.Name 

Call ToggleEdit 

end sub 

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

私は常にサブフォームコンテナはctrOrdersのように、それが保持しているオブジェクトから別の名前を制御できます。サブフォームコンテナコントロールはAllowEditsプロパティを持たないため、フォームは実行するので、コンテナが保持するフォームオブジェクトを参照する必要があります。

Me.ctrOrders.Form.AllowEdits = False

だから、これはうまくいくかもしれない:

ctrlControl.Form.AllowEdits = False

+0

をありがとう、私はバックオフィスで午前とき、午前中に試みることを与えただろう! – Chuck0185

関連する問題