|
こんにちは。
私もkanabunさんと同意見で、Worksheet_Changeイベントを使うのなら、
最初に対象範囲をチェックしたほうが良いと思います。
以下、あまり良い例ではないかもしれませんが、一案として
Option Explicit
Const j As Long = 9
Dim x(1 To j) As String
Private Sub Worksheet_Change(ByVal Target As Range)
Dim v As Variant
Dim n As Long
Dim i As Long
With Range("B2").Resize(j, j)
If Intersect(Target, .Cells) Is Nothing Then Exit Sub
n = Target.Row - 1
x(n) = Join(Application.Index(.Value, n))
If WorksheetFunction.CountBlank(.Cells) > 0 Then Exit Sub
v = Sheet2.Range("B2").Resize(j, j).Value
For i = 1 To j
If x(i) <> Join(Application.Index(v, i, 0)) Then Exit For
Next
End With
If i = j + 1 Then
Range("A1").Select
With Me.TextBoxes.Add(216, 175.5, 216, 123)
.Text = "出来上がり"
DoEvents
Application.Wait Now + TimeValue("0:00:02")
.Delete
End With
End If
End Sub
今回のような例示なら、やはりDataObjectを使って、
文字列全体でまとめてチェックすれば良いような気もしますね。
データ数が少ないなら、お遊びで
MsgBox Evaluate("AND(Sheet1!B2:J10=Sheet2!B2:J10)")
|
|