【问题标题】:On Error Goto Line1 not working in VBA错误 Goto Line1 在 VBA 中不起作用
【发布时间】:2017-08-14 04:55:34
【问题描述】:

我正在编写一个 VBA 代码来识别两个不同 Excel 工作表中的数据变化。该代码匹配第一列中的数据(A2 然后 A3 然后 A4....),并检查另一张表中的数据行。但是,当代码在无法找到第一个工作表中但不在第二个工作表中的数据时被中断。 find 函数不返回任何内容。

我需要您的帮助,因为我无法让 On Error Goto Line1 语句正常工作。

最好, 尼桑特

相同的 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

【问题讨论】:

  • FWIW - 您在 If 语句中缺少一个续行字符,但在您将代码输入问题时可能刚刚丢失。
  • 您好,谢谢 YowE3K,是的,您是正确的,行继续丢失,但代码保持不变。问候

标签: vba excel


【解决方案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

【讨论】:

  • 哦,太好了,现在可以了。非常感谢YowE3K。超级好东西:)
猜你喜欢
  • 2011-05-05
  • 2012-08-13
  • 2013-03-26
  • 1970-01-01
  • 2019-10-28
  • 2012-09-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多