照合システムを作ろうとネットを閲覧していたら次のコードが見つかりました。

Private Sub Worksheet_Change(ByVal Target As Range)
Dim rr As Range
If Not Intersect(Target, Range("C1:D10")) Is Nothing Then
For Each rr In Intersect(Target.EntireRow, Range("C:C"))
If Not IsEmpty(rr) And Not IsEmpty(rr.Offset(, 1)) Then
Application.EnableEvents = False
If rr.Value <> rr.Offset(, 1).Value Then
Beep
rr.Offset(, 2).Value = "NG"
Else
rr.Offset(, 2).Value = "OK"
End If
Application.EnableEvents = True
End If
Next
End If
End Sub

このコードでいくと、C列とD列が同じであればE列にOK、間違っていればNGなのですが、C1とC2が同じであればE1にOK、間違っていればNG。次にC3とC4が同じであればE3にOK、間違っていればNG。…というふうにしたいのですが、どうすれば良いのでしょうか?

A 回答 (1件)

こんにちは。


少し変更してみました。

Private Sub Worksheet_Change(ByVal Target As Range)
  Dim rr As Range

  Application.EnableEvents = False
  If Not Intersect(Target, Range("C1:C20")) Is Nothing Then
    For Each rr In Intersect(Target.EntireRow, Range("C:C"))
      If (rr.Row Mod 2) <> 0 Then
        If Not IsEmpty(rr) Then
          If rr.Value <> rr.Offset(1, 0).Value Then
            rr.Offset(, 2).Value = "NG"
          Else
            rr.Offset(, 2).Value = "OK"
          End If
        End If
      Else
        If Not IsEmpty(rr.Offset(-1, 0)) Then
          If rr.Value <> rr.Offset(-1, 0).Value Then
            rr.Offset(-1, 2).Value = "NG"
          Else
            rr.Offset(-1, 2).Value = "OK"
          End If
        End If
      End If
    Next
  End If
  Application.EnableEvents = True
End Sub
    • good
    • 0
この回答へのお礼

早速の回答ありがとうございます。
思った通りに動きました。有難うございます。
また判らないことがあれば質問させていただきますので、その時はよろしくお願いします。

お礼日時:2009/05/25 12:06

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!


人気Q&Aランキング