0
我将工作表代码中的对象(复选框)传递给模块以更新其属性(值和背景颜色)。通过调用模块代码更新对象属性 - Excel VBA
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
属性(值和背景色)不会在这个模块中更新,直到代码返回给调用程序,该程序退出。尽管在被调用的过程中立即更新单元的内部颜色。为什么不立即更新复选框属性?
嗨 - 我正在使用2007 – user2447722
我没有2007年在这里测试,所以将不得不这样做,待其他答复。你是在单步执行代码并观察UI还是使用debug.print语句进行测试?此外,你有哪些SP级别的Office副本补丁? – JosieP
我已经浏览了代码并观察了单元格中的控件。单步执行代码时,将立即更新控件属性和单元格颜色,但在运行代码时,只会立即更新单元格颜色,并且控件属性(颜色和值)仅在调用过程中向用户提供消息框后才会更新。 – user2447722