2016-12-12 8 views
0

マクロを実行したいですか?私のテストセルは別のシートにあります。シート - (データ)マクロのチェック範囲("D2:D10")はい私にメッセージボックス"Go to add to system"とマクロは値が0私はこのコードを持っているセルに値が含まれている場合の表示メッセージボックス付きマクロ

に設定されたこのセルを示すが、それはdoesnの場合、細胞が値12が含まれている場合私のために働くなぜ私は知らない。手伝って頂けますか?

Private Sub check(ByVal Target As Range) 
For Each c In Worksheet("data").Range("D2:D10") 
If Range("D2:D10") = 12 Then 
    MsgBox "Go to add to system" 
    Range ("D2:D10").value = 0 
End If 
Next c 
End Sub 
+0

? 1つのセルでも12が見つかると、フルレンジを0に変更しますか? – nightcrawler23

+0

複数でも1つでも問題はありません –

+0

@FiínekCahůは私の答えでコードをテストし、あなたの意図通りに動作することを教えてください。 –

答えて

1

次のコードは、(それがエラーなしで実行されます)あなたのコードを修正します:

Option Explicit 

Private Sub check(ByVal Target As Range) 

Dim c As Range 

For Each c In Worksheets("data").Range("D2:D10") 
    If c.Value = 12 Then 
     MsgBox "Go to add to system" 
     c.Value = 0 
    End If 
Next c 

End Sub 

しかし、あなたは少し異なるアプローチで行くことができる - あなたが達成しようとしているものを達成することにより、 Worksheet_Changeイベント(「データ」シートの)。複数のセルは12を持っている場合はどう

コード

Option Explicit 

Private Sub Worksheet_Change(ByVal Target As Range) 

Dim c As Range 

' Optional : use if criteria below to check the range only 
' if one of the cells inside range("D2:D10") has changed 
If Not Intersect(Range("D2:D10"), Target) Is Nothing Then 
    ' if you decide to use the "If"above, then you don't need the "For" loop below 
    For Each c In Range("D2:D10") 
     If c.Value = 12 Then 
      MsgBox "Go to add to system" 
      c.Value = 0 
     End If 
    Next c 
End If 

End Sub 
+0

こんにちは、特定の細胞の範囲を置き換えることができますか?または両方の方法を併用することはできますか? thx –

+0

@FiínekCahů特定の細胞は何ですか?単一のセルに対しても範囲を使用できます。 –

+0

範囲ではなく、 "D29"、 "D55"などの特定のセル –

関連する問題