1

我正在尝试创建一个交互式 PowerPoint(不是 Excel,因为它需要显示)。我正在尝试使用代码进行一些条件格式化。ProdArray 是所有文本框,我想根据它们与另一个文本框 (ProdTarg) 相比的值来着色

Dim ProdArray(0 To 5) As String
Dim Day As Variant
ProdArray(0) = MonProd
ProdArray(1) = TueProd
ProdArray(2) = WedProd
ProdArray(3) = ThuProd
ProdArray(4) = FriProd
ProdArray(5) = SatProd

For Each Day In ProdArray
    If Val(Day) >= Val(ProdTarg) * (Sixth + SixthLim) Then
        Day.BackColor = &HFF00&
        ElseIf Val(Day) < Val(ProdTarg) * (Sixth - SixthLim) Then
        Day.BackColor = &HFF&
        Else
        Day.BackColor = &H80FF&
    End If
Next Day

我有一个 For Each 循环,以使编码更简洁,但我不断遇到类型不匹配。里面的If循环基于以下代码:

If Val(TueProd) >= Val(ProdTarg) * (Sixth + SixthLim) Then
    TueProd.BackColor = &HFF00&
    ElseIf Val(TueProd) < Val(ProdTarg) * (Sixth - SixthLim) Then
    TueProd.BackColor = &HFF&
    Else
    TueProd.BackColor = &H80FF&
End If

我希望这能让您了解我正在努力实现的目标。我希望我没有太密集,但我似乎找不到关于如何以我需要的方式整合变量的主题。

4

1 回答 1

0

要使您的代码正常工作,您需要进行以下更改:

  1. 以这种方式将 ProdArray 声明为 Variant:

    Dim ProdArray(0 To 5)

  2. 用于Set创建数组元素,例如:

    Set ProdArray(0) = MonProd
    Set ProdArray(1) = TueProd
    'etc

于 2013-07-02T09:56:49.093 回答