首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何缩短代码以在ms-access vba中单击命令时更改控件属性

如何缩短代码以在ms-access vba中单击命令时更改控件属性
EN

Stack Overflow用户
提问于 2017-12-22 05:41:44
回答 1查看 62关注 0票数 0

我有一个用户表单与一组类似的属性和功能的命令按钮。我使用这些按钮让用户跟踪他的活动。例如,每当用户点击"production“按钮时,应用程序标签将显示"production”模式,当用户按下"Break“按钮时,标签将从"production”模式变为"Break“模式,类似地,我在相同的表单上总共有7-8个按钮。其他情况是,无论按下哪个按钮,都应禁用该按钮并启用所有其他按钮,然后是下一步按钮,如果按下该按钮,则应禁用该按钮,并应启用先前按下的按钮。

已经被按下的按钮也应该改变它的颜色,并且还应该把上一个按钮的颜色改回正常。

我知道这是很难理解的场景,请检查下面的代码,我的一个按钮,它工作正常。

代码语言:javascript
运行
复制
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

上面的代码完美地工作,并将属性更改为3个按钮(它的示例代码不是所有7个按钮的代码),但我总共有7-8个按钮,我可能会在未来添加更多的按钮,所以如果我继续在一个按钮中为所有7-8个按钮编写这种代码,那么将花费大量的时间和精力。

那么,缩短这段代码的最佳方式是什么呢?

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

EN

回答 1

Stack Overflow用户

发布于 2017-12-22 16:44:48

你可以有一个helper子函数:

代码语言:javascript
运行
复制
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事件中调用它,如下所示:

代码语言:javascript
运行
复制
For Id = 1 To 8
    Select Case Id
        Case 1, 2, 4, 7
            SetButton Id, True
        Case Else
            SetButton Id, False
    End Select
Next
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47933090

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档