通过调用模块代码更新对象属性 - Excel VBA

时间:2013-06-03 12:04:57

标签: excel-vba vba excel

我将一个对象(复选框)从工作表代码传递给模块以更新其属性(值和背景颜色)。

Dim Range1 As Range
Set Range1 = Range("K2")
Dim ChkBox1 As Object
Set ChkBox1 = CheckBox1

传递的代码是:

If CheckBox1.Value = True Then
    SetGreen R1:=Range1, C1:=ChkBox1
Else
    SetRed R1:=Range1, C1:=ChkBox1
End If

因此,如果选中该复选框,则将背景颜色设置为绿色,如果未选中,则将其设置为红色。

设置为红色的被调用程序代码为:

Sub SetRed(ByVal R1 As Range, ByVal C1 As Object)
    R1.Interior.Color = RGB(255, 0, 0)
    With C1
        .BackColor = RGB(255, 0, 0)
        .Value = False
    End With
End Sub

在代码返回到调用过程并退出此过程之前,此模块中的属性(值和背景颜色)不会更新。尽管如此,单元的内部颜色在被调用的过程中立即更新。为什么复选框属性不会立即更新?

1 个答案:

答案 0 :(得分:0)

您使用的是哪个版本的Excel?在2010年,我可以在被调用的例程中看到控件更新,并且相应地更改属性值。