使用vba在同一单元格中的两个子过程中汇总两个值

时间:2017-08-11 08:22:57

标签: excel excel-vba 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

我想在同一个单元格中组合它们的值。请你帮帮我。非常感谢

2 个答案:

答案 0 :(得分:1)

创建一个这样的函数:

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

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

dt <- data.table(
  ID=c(1,1,1,2,2,3,4,4),
  art=c("X", "Y", "X", "X", "X", "X", "Z", "X"),
  redskb=c("a", "Y", "a", "b", "b", "c", "k", "n")
)

   ID art redskb
1:  1   X      a
2:  1   Y      Y
3:  1   X      a
4:  2   X      b
5:  2   X      b
6:  3   X      c
7:  4   X      k
8:  4   Z      n

该函数将检查checkbox126的状态,返回2或0,第二个过程在末尾添加此值。

答案 1 :(得分:0)

所以这令人困惑。有人检查复选框,然后检查Count的值,如果满足条件则将其设置为0。然后你将它设置为0.无论如何。

如果勾选了复选框,则设置为2,如果未选中,则保持为0.

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

然后假设更改的目标是单个单元格,并检查其值是否为颜色值。但是,正如我们所知,如果它是单个单元格,要达到这一点,单个单元格必须是C29,您更改为上面的0或2的单元格,那么我们知道该值与值相同伯爵,所以这些条件都不会匹配...

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

我建议您重新阅读所有代码并重新提出这个问题。

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

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