创建循环以更改表格形式Access 2007中的背景颜色

时间:2014-04-16 14:08:08

标签: vba loops ms-access-2007 conditional-formatting

我在访问中创建了一个数据库,其中显示了一个文章列表,其状态在表子表单中。有5种不同的状态选项,我需要它们具有特定的颜色。但在访问2007中,我只能使用3个条件格式化语句(如果计算默认设置,则为4个)。

但我需要5.(01,05,06,08,09)。我一直在寻找各处,但我似乎无法找到它。

我一直在尝试这个角度:

If Me.txtArtikelStatus = "05" Then
    Me.txtArtikelStatus.BackColor = RGB(215, 228, 188)
ElseIf Me.txtArtikelStatus = "01" Then
    Me.txtArtikelStatus.BackColor = RGB(219, 238, 243)
ElseIf Me.txtArtikelStatus = "06" Then
    Me.txtArtikelStatus.BackColor = RGB(252, 213, 180)
Else
    Me.txtArtikelStatus.BackColor = RGB(230, 182, 184)
End If

但就我而言。所有记录现在都是相同的颜色(绿色根据状态05)

我的子表单名称为fsubAlleArtikelen,它基于名为qryAlleArtikelen的查询,该查询基于表tblZMMPCtblZMAC

状态列名为txtArtikelStatus,并且是text列。

我猜我需要创建一个循环,但是我不了解VBA能够创建一个真正有效的循环。

3 个答案:

答案 0 :(得分:0)

使用Select case声明。

做很多这类事情要干得多。您可以选择有效地执行大型if / elseif语句,就像您尝试做的那样但代码工作得更好(并且更清晰)。

有关更多文档,请参阅this link

以下是适合您情况的内容:

Select Case Me.txtArtikelStatus

    Case "05"
        Me.txtArtikelStatus.BackColor = RGB(215, 228, 188)

    Case "01"
        Me.txtArtikelStatus.BackColor = RGB(219, 238, 243)

    Case "06"
        Me.txtArtikelStatus.BackColor = RGB(252, 213, 180)

    Case "08"
        Me.txtArtikelStatus.BackColor = RGB(252, 213, 180)
    Case "09"
        Me.txtArtikelStatus.BackColor = RGB(252, 213, 180)

    Case Default
        'this captures everything else

End Select

答案 1 :(得分:0)

我在你的代码帖中想到你试图在连续的子表单中这样做。不幸的是,如果更改一个控件的属性(如颜色),它将对连续子窗体中同名的所有可见控件执行此操作。我将尝试解释一种解决方法。

1)创建一个包含2列的单独表:一个ID列,您将存储“05”,“01”等。下一列将是一个OLE对象,您可以在其中存储包含此颜色的图像

2)修改表单的数据源以加入列txtArtikelStatus从#1进入ID列并将OLE列添加到输出。

3)在表单上放置一个“绑定对象框架”,并使其控件源属性为#2的OLE列。

如果一切正常,那么您现在将看到状态颜色。

答案 2 :(得分:0)

那些家伙们。我仍然无法做我想做的事。但是暂时我调整了我的期望并且只保留了其中一个状态,所以我可以使用条件格式。