我正在使用VBA代码来识别两个不同Excel工作表中的数据更改。代码匹配第一列中的数据(A2然后是A3然后是A4 ....)并检查行中的另一个表中的数据。但是,当代码在第一个工作表中找不到第二个工作表但不在第二个工作表中的数据时会被中断。 find函数不返回任何内容。
我需要你的帮助,因为我无法使On Error Goto Line1语句正常工作。
最佳, NISHANT
相同的VBA代码:
Sub Compare()
Var = 2
Sheets("Sheet1").Select
Do Until Range("A" & Var).Value = ""
Sheets("Sheet1").Select
var1 = Range("A" & Var).Value
Sheets("Sheet2").Select
Range("A1").Select
On Error GoTo Line1
var2 = Range("A:A").Find(What:=var1).Row
For i = 1 To 6
If Worksheets("Sheet1").Cells(Var, i).Value <> _
Worksheets("Sheet2").Cells(var2, i) Then
Worksheets("Sheet2").Cells(var2, i).Interior.ColorIndex = 3
End If
Next
Line1:
Var = Var + 1
Loop
End Sub
答案 0 :(得分:1)
您没有正确使用错误处理。例如,在遇到错误后,您尝试继续处理,就像没有发生任何事情一样。当下一个错误发生时,这将导致无法解决的错误。
除非绝对必要,否则最好避免错误处理,在这种情况下,这是不必要的。
Sub Compare()
Dim FindRange As Range
Dim Var As Long
Dim Var2 As Long
Var = 2
Do Until Worksheets("Sheet1").Range("A" & Var).Value = ""
var1 = Worksheets("Sheet1").Range("A" & Var).Value
Set FindRange = Worksheets("Sheet2").Range("A:A").Find(What:=var1)
If Not FindRange Is Nothing Then
var2 = FindRange.Row
For i = 1 To 6
If Worksheets("Sheet1").Cells(Var, i).Value <> _
Worksheets("Sheet2").Cells(var2, i) Then
Worksheets("Sheet2").Cells(var2, i).Interior.ColorIndex = 3
End If
Next
End If
Var = Var + 1
Loop
End Sub