在我的Access数据库中,我有一个在模块(Main)中定义的全局变量(Global allowEditing as Boolean
)。我设置了这个变量,然后我想在表单级别使用它来禁用一些按钮。我遇到了这个问题。
For Each ctl In Me.Controls
ctl.Enabled = False 'Works for True or False
ctl.Enabled = allowEditing 'Throws error
Next
抛出的错误是:
运行时错误'438':对象不支持此操作 财产或方法。
这里发生了什么,我如何使用布尔值?
答案 0 :(得分:3)
当您尝试设置不存在的属性时会发出错误438,例如启用标签控件。
试试这个
For Each ctl In Me.Controls
If TypeOf ctl Is TextBox Then
ctl.Enabled = False 'Works for True or False
ctl.Enabled = allowEditing 'Throws error
End If
Next
答案 1 :(得分:1)
听起来像是一个范围问题。如果要在多个表单之间全局使用此布尔值,我建议创建一个Access表来保存全局状态变量。只需在表上运行查询即可获取值。
答案 2 :(得分:1)
每个控件都有ControlType
属性。您可以利用该属性仅禁用从支持Enabled
属性的控件中选择的那些属性。此过程将为复选框,组合,列表框和文本框设置Enabled
属性。
For Each ctl In Me.Controls
With ctl
Select Case .ControlType
Case acCheckBox, acComboBox, acListBox, acTextBox
.Enabled = allowEditing
Case Else
' pass
End Select
End With
Next