2017-08-11 40 views
0

在這裏您可以看到兩個子程序,我想在同一個單元格中總結它們的值。從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 

我想結合他們的價值在同一個單元格。請你幫我解決這個問題。非常感謝

+0

目前尚不清楚你想要加在一起是什麼,你能舉個例子? –

+0

正如你所看到的,這兩個過程給出了兩個不同的值: – Tom

+0

你的第一個函數似乎只將0或2放入Cell C29,具體取決於複選框的值。這是它應該做的嗎? –

回答

1

創建這樣的功能:

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和返回2時給出語法錯誤,它們都以紅色標記,即使我已經添加到xlOn – Tom

+0

對不起,我的語法混淆了(最近C#太多)。它現在起作用,我測試了它。 –

+0

如果ActiveSheet.Shapes(「複選框126」)運行時錯誤1004 ControlFormat = xlOn然後 – Tom

0

所以這是令人困惑的。有人檢查複選框,然後檢查Count的值,並在滿足條件時將其設置爲0。然後你將它設置爲0。

如果該複選框被選中,其設置爲2,如果取消選中,它保持爲0

然後你設置的小區是計數的值,這將觸發Worksheet_Change,它看起來像你試圖設置它只會觸發對上面更改的單元格的更改,爲什麼不將它添加到相同的子例程中?

然後您假設更改的目標是單個單元格,並檢查其值是否爲顏色值。但是我們知道,如果它是一個單細胞,爲了達到這一點,那個單細胞必須是C29,這個細胞你改變爲0或2以上,然後我們知道這個值與計數,所以這些條件都不會匹配...

...除非單元格C29手動更改爲顏色,但在這種情況下,您沒有2個要添加的數字。

我建議您重新查看您的所有代碼並重新解釋此問題。

要真正回答你的問題,只需添加這第二個常規的底部:

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

相關問題