2017-08-11 20 views
0

で合計します。ここでは、同じセル内の値を合計したい2つのサブルーチンに進みます。同じセルの2つのサブプロシージャの2つの値を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

ご覧のとおり、2つの異なる値が表示されます: – Tom

+0

最初の関数は、チェックボックスの値に応じて、セルC29に0または2を入れるだけです。これはそれがやるべきことですか? –

答えて

1

は次のように関数を作成します:

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

を2番目の手順の最後に追加します。

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

機能は、2または0を返す、checkbox126の状態を確認し、 2番目の手順は最後にこの値を追加します。

+0

で0または2だけです。機能チェックボックスでreturn 0とreturn 2に構文エラーが表示されていますが、xlOnに追加しても両方とも赤でマークされています – Tom

+0

申し訳ありませんが、 (最近はC#が多すぎます)。それは今働く、私はそれをテストしました。 –

+0

ActiveSheet.Shapes( "チェックボックス126")で実行時エラー1004が発生しました。ControlFormat = xlOn Then – Tom

0

これは混乱しています。誰かがチェックボックスをチェックした後、値がCountであることを確認し、条件が満たされた場合は0に設定します。とにかくそれを0に設定します。チェックボックスがチェックされた場合は、あなたがしようとしたように見えるWorksheet_Changeをトリガーするカウント値、であるようにセルを設定すると

0として

は、2へのセットは、チェックを外す場合は、それがまま上に変更したセルの変更をトリガーするだけなので、同じサブルーチンに追加しないでください。

次に、変更されたターゲットが単一のセルであると想定し、その値にカラー値をチェックします。しかし、それが単一のセルであれば、この点まで到達するには、その単一のセルはC29でなければならず、上記の0または2に変更したセルは、その値がこれらの条件はどれも一致しません。

...セルC29を手動で色に変更しない限り、その場合は2つの数字を追加する必要はありません。

私はすべてのコードを見直し、この質問を言い換えることをお勧めします。

実際には第二のルーチンの下にこれを追加し、あなたの質問に答えるために:

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

関連する問題