Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/docker/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Excel 使用vba将同一单元格中两个子过程的两个值相加_Excel_Vba - Fatal编程技术网

Excel 使用vba将同一单元格中两个子过程的两个值相加

Excel 使用vba将同一单元格中两个子过程的两个值相加,excel,vba,Excel,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 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
子复选框126\u单击()
如果(Count=Null),则
计数=0
如果结束
计数=0
如果ActiveSheet.Shapes(“复选框126”).ControlFormat=xlOn,则Count=Count+2
范围(“C29”)。值=计数
端接头
"第二套,
私有子工作表_更改(ByVal目标作为范围)
如果不相交(目标,范围(“C29”)为零,则
如果Target.Value=“橙色”,则
目标偏移量(0,1)。值=1
ElseIf Target.Value=“深橙色/棕色”然后
目标偏移量(0,1)。值=1
ElseIf Target.Value=“Pink”则
目标偏移量(0,1)。值=2
ElseIf Target.Value=“红色”则
目标偏移量(0,1)。值=2
ElseIf Target.Value“”则
Target.Offset(0,1).Value=0
其他的
如果结束
如果结束
端接头

我希望在同一单元格中合并它们的值。你能帮我做这个吗。非常感谢

创建如下功能:

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()

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

因此这很容易混淆。有人选中复选框,然后您检查
计数的值,如果满足条件,则将其设置为0。然后您将其设置为0

如果勾选复选框,则将其设置为2,如果取消勾选,则保持为0

然后您将一个单元格设置为count的值,这将触发
工作表\u Change
,这看起来像是您试图设置的,因此它只会在您上面更改的单元格发生更改时触发,所以为什么不将其添加到同一子例程中呢

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

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

我建议重新阅读所有代码并重新表述这个问题

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


Target.Offset(0,1)。Value=Target.Offset(0,1)。Value+Range(“C29”)。Value

不清楚要加在一起的是什么,您能举个例子吗?正如您所看到的,这两个过程给出了两个不同的值:第一个函数似乎只将0或2放入单元格C29,具体取决于复选框的值。这就是它应该做的吗?是的,在第一个复选框中只有0或2。functionwith function checkbox在返回0和返回2时给出语法错误,它们都用红色标记,尽管我已经将它们添加到xlOnSorry中,但语法混乱(最近太多C)。它现在可以工作了,我已经测试过了。运行时错误1004在If ActiveSheet.Shapes(“复选框126”).ControlFormat=xlOn上,然后在我选中该复选框后,系统因该错误而冻结,我从您的公式中复制了该错误。在额外的代码出现之前它能工作吗?