首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >(Access、VBA)根据窗体记录源上的表中的CheckBox值更改窗体上按钮的颜色

(Access、VBA)根据窗体记录源上的表中的CheckBox值更改窗体上按钮的颜色
EN

Stack Overflow用户
提问于 2021-02-10 21:57:28
回答 1查看 138关注 0票数 1

我正在为水产养殖部门创建一个数据库。在一个表单中,我为每个存在的“池”放置了按钮:

这样你就有了一个想法,按钮有以下代码,它们转发到另一个表单,其中包含关于给定池的特定信息:

代码语言:javascript
复制
Private Sub cmd2_Click()
    On Error GoTo cmd2_Click_Err
    codBaseNum = "AT 1/2"

DoCmd.OpenForm "InfoBotonTanque", acNormal, "", "[Base-Número]=""AT 1/2""", , acLast

cmd2_Click_Exit:
    Exit Sub

cmd2_Click_Err:
    MsgBox Error$
    Resume cmd2_Click_Exit

End Sub

基于Table上的两个不同的复选框,其中包含有关各个池的信息,我希望这两个按钮更改颜色。下面是表中的数据:

复选框名称:保留和条件?。基地-努梅罗是池ID。所有三个值都在表单的RecordSource中:

编辑:成功地完成了我想要的:按钮根据CheckBox值改变颜色!下面的代码不是很好用,因为我必须为每个按钮输入相同的内容,并做一些小改动,大约有150个按钮,但它可以工作。使用的代码是:

代码语言:javascript
复制
Private Sub Form_Load()    
If DLookup("[Reserva]", "Tanques", "[Base-Número] = 'AT 1/2'") = True And DLookup("[Condicion?]", "Tanques", "[Base-Número] = 'AT 1/2'") = False Then
    Me.cmd2.BackColor = RGB(255, 215, 0)
ElseIf DLookup("[Reserva]", "Tanques", "[Base-Número] = 'AT 1/2'") = False And DLookup("[Condicion?]", "Tanques", "[Base-Número] = 'AT 1/2'") = True Then
    Me.cmd2.BackColor = RGB(255, 0, 0)
ElseIf DLookup("[Reserva]", "Tanques", "[Base-Número] = 'AT 1/2'") = False And DLookup("[Condicion?]", "Tanques", "[Base-Número] = 'AT 1/2'") = False Then
    Me.cmd2.BackColor = RGB(51, 171, 249)
Else
    Me.cmd2.BackColor = RGB(120, 120, 120)
End If
End Sub
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-02-18 04:58:29

为了不重复150次代码,使用一个循环来构造命令按钮名称以及基地-努梅罗参数和变量。考虑一下:

代码语言:javascript
复制
Private Sub Form_Load()
Dim x As Integer
For x = 1 to 150
    If DLookup("[Reserva]", "Tanques", "[Base-Número] = 'AT 1/" & x & "'") = True _
               And DLookup("[Condicion?]", "Tanques", "[Base-Número] = 'AT 1/" & x & "'") = False Then
        Me("cmd" & x ).BackColor = RGB(255, 215, 0)
    ElseIf DLookup("[Reserva]", "Tanques", "[Base-Número] = 'AT 1/" & x & "'") = False _
               And DLookup("[Condicion?]", "Tanques", "[Base-Número] = 'AT 1/" & x & "'") = True Then
        Me("cmd" & x).BackColor = RGB(255, 0, 0)
    ElseIf DLookup("[Reserva]", "Tanques", "[Base-Número] = 'AT 1/" & x & "'") = False _
               And DLookup("[Condicion?]", "Tanques", "[Base-Número] = 'AT 1/" & x & "'") = False Then
        Me("cmd" & x).BackColor = RGB(51, 171, 249)
    Else
        Me("cmd" & x).BackColor = RGB(120, 120, 120)
    End If
Next
End Sub
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66138295

复制
相关文章

相似问题

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