从vba中的同一个单元格中的两个子程序中总结出两个值

在这里你可以看到两个子程序,我想在同一个单元格中总结它们的价值。

Sub CheckBox126_Click() If (Count = Null) Then Count = 0 End If Count = 0 If ActiveSheet.Shapes("Check Box 126").ControlFormat = xlOn Then Count = Count + 2 Range("C29").Value = Count End Sub 'second routine Private Sub Worksheet_Change(ByVal Target As Range) If Not Intersect(Target, Range("C29")) Is Nothing Then If Target.Value = "Orange" Then Target.Offset(0, 1).Value = 1 ElseIf Target.Value = "Dark orange/brown" Then Target.Offset(0, 1).Value = 1 ElseIf Target.Value = "Pink" Then Target.Offset(0, 1).Value = 2 ElseIf Target.Value = "Red" Then Target.Offset(0, 1).Value = 2 ElseIf Target.Value <> "" Then Target.Offset(0, 1).Value = 0 Else End If End If End Sub 

我想结合他们的价值在同一个单元格。 请你能帮我解决这个问题。 非常感谢

创build一个这样的function:

 Function CheckBox126() As Integer If ActiveSheet.Shapes("Check Box 126").ControlFormat = xlOn Then CheckBox126 = 2 else CheckBox126 = 0 End If End Function 

在第二个程序结束时添加:

 Target.Offset(0, 1).Value = Target.Offset(0, 1).Value + CheckBox126() 

该function将检查checkbox126的状态,返回2或0,第二个过程最后加上这个值。

所以这是令人困惑的。 有人检查checkbox,然后检查Count的值,如果条件满足,则将其设置为0。 然后你把它设置为0。

如果勾选了checkbox,则将其设置为2,如果未选中,则保持为0。

然后你设置一个单元格作为计数的值,这将触发Worksheet_Change ,它看起来像你试图设置,所以它只会触发对上面更改的单元格的更改,所以为什么不把它添加到相同子程序?

然后你认为改变的目标是一个单元格,并检查它的值的颜色值。 但是因为我们知道,如果它是一个单细胞,为了达到这一点,这个单细胞必须是C29,这个细胞你改变为0或2以上,那么我们知道这个值与数,所以这些条件都不会匹配…

…除非单元格C29手动更改颜色,但在这种情况下,您没有2个数字要添加。

我会build议重新审视你的所有代码并重新解释这个问题。

要真正回答你的问题,只需将其添加到第二个例程的底部:

Target.Offset(0, 1).Value = Target.Offset(0, 1).Value + Range("C29").Value