禁用控件后在 Access VBA 中显示禁用的控件
Posted
技术标签:
【中文标题】禁用控件后在 Access VBA 中显示禁用的控件【英文标题】:Gray out disabled Controls in Access VBA after disabling the Control 【发布时间】:2017-03-23 16:36:29 【问题描述】:我有一个带有许多选项卡和子表单的 MS Access 表单。我为禁用/启用所有子窗体上的所有控件的按钮编写了一些 VBA 代码。出于某种原因,如果您手动将其 Enabled 属性设置为 False,按钮不会像它们那样变灰。有谁知道如何使用 VBA 代码实现这一点?
谢谢!
下面是我使用的代码:
Private Sub Command137_Click()
Dim ctrlControl As Control
For Each ctrlControl In Me.Controls
On Error GoTo err:
If ctrlControl.ControlType = acTabCtl Or ctrlControl.Name = "Command9" Then
Else
ctrlControl.Enabled = False
End If
Continue:
Next
Exit Sub
err:
Debug.Print err.Description
Resume Continue
End Sub
【问题讨论】:
您如何启用/禁用它?我一直这样做,从未见过这个问题。 我刚刚添加了我在原始帖子中使用的 VBA 代码。谢谢! 查看是否所有控件都在循环中:On Error GoTo err
之前放入:Debug.Print ctrlControl.Name & vbCrLf
以查看所有控件实际上都在迭代。
我调试过,都是迭代的。它们都没有落入错误陷阱。按钮的禁用实际上有效,但按钮不会变灰。是否有另一个属性可以控制它?我注意到当我手动更改按钮控件以禁用它时,它会变灰。
我不知道...此代码应该适用于一种形式的控件,主要形式,由Me
关键字引用。它不应该影响子表单上的控件。如何使用此代码禁用子表单上的按钮?
【参考方案1】:
我也遇到了同样的问题。不过,我想出了一个绕过它的方法。
首先在一个模块中定义一些公共变量:
Option Explicit
Public greyout, white As Long
然后在你的 Form_Load() 子中
Public Sub Form_Load()
'color RGB definition
greyout = RGB(210, 210, 210)
white = RGB(255, 255, 255)
End Sub
然后当您在文本/组合框上使用 .enable 时,请执行此操作
me.textbox.enabled = false
me.textbox.backcolor = greyout
me.textbox.enabled = true
me.textbox.backcolor = white
希望对你有帮助
【讨论】:
【参考方案2】:您正在搜索错误的 controlType。使用“acCommandButton”而不是“acTabCtrl”。 (我添加了一个 ELSE 来启用其他所有功能)
IF ctrlControl.ControlType = acCommandButton THEN
ctrControl.enabled = false
ELSE
ctrControl.enabled = true
END IF
【讨论】:
您最初的问题是关于“按钮”,如果您要禁用文本框,那么您需要搜索 acTextBox以上是关于禁用控件后在 Access VBA 中显示禁用的控件的主要内容,如果未能解决你的问题,请参考以下文章