2017-12-05 7 views
0

アクティブシートが特定のシートである場合、Excelに値をコピーさせようとしています。私が抱えている問題は、あるシートの値がシートに転送され、それがオンになっている必要がある場合、他のif文に記述されているセルを上書きしますが、それらの値を上書きしないでください。誰も私がこの問題を解決するのを助けることができますか?if文が複数ある場合は、ifが満たされていない場合にセル内に既に存在するものを削除します。

If ActiveSheet = Sheets("Parts for site") Then 
    Sheets("INTERNAL").Cells(35, 4) = Sheets("Parts for site").Cells(i + 3 - n, 17) 
    Else 
End If 

If ActiveSheet = Sheets("Parts for options") Then 
    Sheets("INTERNAL").Cells(52, 4) = Sheets("Parts for options").Cells(i + 3 - n, 17) 
    Else 
End If 

If ActiveSheet = Sheets("Parts for renovation") Then 
    Sheets("EXTERNAL").Cells(29, 4) = Sheets("Parts for renovation").Cells(i + 2 - n, 17) 
    Else 
End If 

If ActiveSheet = Sheets("Parts for site") Then 
    Sheets("EXTERNAL").Cells(35, 4) = Sheets("Parts for site").Cells(i + 2 - n, 17) 
    Else 
End If 

If ActiveSheet = Sheets("Parts for options") Then 
    Sheets("EXTERNAL").Cells(52, 4) = Sheets("Parts for options").Cells(i + 2 - n, 17) 
    Else 
End If 
+0

それぞれのIF文に 'Exit Sub'を追加します。 – L42

+0

なぜ同じシートのテストを繰り返していますか? 1つのIfブロックですべての必要なコンテンツをコピーする必要があります。なぜ、異なるソースセルを同じ宛先にコピーしていますか? –

+0

配列に必要な値をすべて入れることはできませんか?そして、あなたが望むようにそれらを操作します。 – AntiDrondert

答えて

0

"&"を使用して両方の値を組み合わせることができます。ここで

例:

If ActiveSheet = Sheets("Parts for site") Then 
    Sheets("INTERNAL").Cells(35, 4) = Sheets("INTERNAL").Cells(35, 4) & Sheets("Parts for site").Cells(i + 3 - n, 17) 
    Else 
End If 
+0

単純な解法ですが、うまくいきません。これを行うと、両方の値が同じセルに保存されます。私は各セルに1つの値が必要です。私はちょうどシートを区別し、特定のシートを他の値を上書きすることなく特定の値を追加するために優れている必要があります。 – Sidvi

+0

どのセルが上書きされますか?あなたの目的地は常に異なっているように見えますか? – Pierre44

0

あなたは以下を試すことができます:

Sub MySub() 

Select Case ActiveSheet.Name 

    Case "Parts for site" 
     Sheets("INTERNAL").Cells(35, 4) = Sheets("INTERNAL").Cells(35, 4) & "||" & Sheets("Parts for site").Cells(i + 3 - n, 17) 

    Case "Parts for options": 
     Sheets("INTERNAL").Cells(52, 4) = Sheets("INTERNAL").Cells(52, 4) & "||" & Sheets("Parts for options").Cells(i + 3 - n, 17) 

    Case "Parts for renovation" 
     Sheets("EXTERNAL").Cells(29, 4) = Sheets("EXTERNAL").Cells(29, 4) & "||" & Sheets("Parts for renovation").Cells(i + 2 - n, 17) 

    Case "Parts for site" 
     Sheets("EXTERNAL").Cells(35, 4) = Sheets("EXTERNAL").Cells(35, 4) &"||" & Sheets("Parts for site").Cells(i + 2 - n, 17) 

    Case "Parts for options" 
     Sheets("EXTERNAL").Cells(52, 4) = Sheets("EXTERNAL").Cells(52, 4) & "||" & Sheets("Parts for options").Cells(i + 2 - n, 17) 

End If 

End Sub 

は、あなたがしたいこれは、これは、元の値をクリアしませんが、あまりにも古い値を持つことになります。

関連する問題