こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

Excel VBA の件で質問です

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

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。…というふうにしたいのですが、どうすれば良いのでしょうか?

投稿日時 - 2009-05-25 02:16:31

QNo.4987996

困ってます

質問者が選んだベストアンサー

こんにちは。
少し変更してみました。

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

投稿日時 - 2009-05-25 11:04:38

お礼

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

投稿日時 - 2009-05-25 12:06:10

ANo.1

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(1)

あなたにオススメの質問