如何在ms-access vba中单击命令按钮单击以更改代码以更改控件属性

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何在ms-access vba中单击命令按钮单击以更改代码以更改控件属性相关的知识,希望对你有一定的参考价值。

我有一个userform,其中包含一组具有类似属性和功能的命令按钮。我正在使用这些按钮让用户跟踪他的活动。所以例如每当用户点击“生产”按钮时,应用程序标签就会显示“生产”模式,当用户按下“中断”按钮时,标签将从“生产”模式变为“中断”模式,同样我总共有7-8个按钮在同一表格上。其他条件是按下任何按钮,按钮应该被禁用,所有其他按钮应该被启用,然后是下一个按钮,如果按下它应该被禁用,它应该启用之前按下的按钮。

按下的按钮也会改变颜色,还应将前一个按钮的颜色恢复正常。

我理解这个场景很难理解,请查看下面的代码,了解我的一个按钮及其工作情况。

Private Sub btn1()
    Me.Label78.Caption = Me.btn1.Caption
    Me.btn1.BackColor = RGB(250, 100, 100)
    Me.btn1.Gradient = 12
    Me.btn1.Enabled = False
    Me.btn2.Enabled = True
    Me.btn2.BackColor = RGB(100, 250, 100)
    Me.btn2.Gradient = 12
    Me.btn3.Enabled = True
    Me.btn3.BackColor = RGB(100, 250, 100)
    Me.btn3.Gradient = 12
End Sub

上面的代码工作perfeclty并将属性更改为3个按钮(其示例代码不是所有7个按钮的代码),但我总共有7-8个按钮,如果我继续编写这种代码,我可能会在将来添加更多按钮在所有7-8个按钮的一个按钮中,则需要花费大量时间和效果。

那么缩短这段代码的最佳方法是什么?

我知道这有点复杂,因此请询问是否需要更多信息。提前致谢 !!

答案

你可以有一个辅助子功能:

Private Sub SetButton(ByVal ButtonId As Long, ByVal Enabled As Boolean)

    Dim BackColor As Long

    If Enabled Then
        BackColor = RGB(100, 250, 100)
    Else
        BackColor = RGB(250, 100, 100)
    End If

    With Me("btn" & Cstr(Id))
        .Enabled = Enabled
        .Gradient = 12
        .BackColor = BackColor
    End With

End Sub

然后在OnClick事件中调用它,如:

For Id = 1 To 8
    Select Case Id
        Case 1, 2, 4, 7
            SetButton Id, True
        Case Else
            SetButton Id, False
    End Select
Next

以上是关于如何在ms-access vba中单击命令按钮单击以更改代码以更改控件属性的主要内容,如果未能解决你的问题,请参考以下文章

MS-Access - 从超链接数据单击打开表单

从组合框中选择下一个项目,然后单击 Excel VBA 按钮

VBA代码获取单击按钮的行号

如何使用VBA单击网页上的按钮(名称隐藏)?

无法写入文件名并同时单击“保存”按钮...VBA代码

单击保存按钮后如何在用户窗体中添加依赖于另一个组合框的excel vba组合框而不影响清除数据功能