出现错误时,转到< label& gt;(错误地起作用) [英] On Error goto <label> (incorrectly works)

查看:51
本文介绍了出现错误时,转到< label& gt;(错误地起作用)的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

当发生运行时错误1004"时,我希望程序跳过部分代码,然后继续工作.在第一个变量的情况下,它可以正常工作,而在第二个运行时错误1004"的情况下,再次弹出.

When "run-time error 1004" occurs I want the program to skip a part of the code and work further . With the first variable it works normally , but with the second "run-time error 1004" again pops up.

    Sub связатьцифирь14()
    Dim book1 As Workbook
    Dim book2 As Workbook
    Dim r As Range
    Dim firstAddress As String
    Dim n, m, e, t As Long
    Dim A()
    Dim B()
    Dim D()
    Dim F()
    Dim G As String
    Dim H As String
    Dim intBe As Integer
    Dim varValue1 As Variant
    Dim varValue2 As Variant




    'сезон (прошлый,допрошлый,додопрошлый)
    A = Array("прошлый", "допрошлый", "додопрошлый")
    'страна
    D = Array("Англия", "Испания", "Италия", "Германия", "Голландия", "Франция", "Португалия", "Россия", "Украина")
   'место (1,2,3,4,5,6)
    B = Array("1", "2", "3", "4", "5", "6")
    'номер условия
    F = Array("6", "7", "8", "16", "17", "21", "22", "23", "25", "26", "29", "30", "31", "54", "55", "56", "57", "58", "59")
   'Общ п/пр
    G = "AP100"
    'Общ
    H = "AO100"

    Set book1 = Workbooks.Open("E:\Super M\Проект ставки\Решение\цифирь.xlsx")

    'переходим в активную страницу откуда надо скопировать данные'
    'массив условие
     For t = 0 To 18
    'массив страна
     For m = 0 To 8
    'массив сезон
    For n = 0 To 2
    'массив место
    For e = 0 To 5


   'пропускаем ошибку
   On Error GoTo Label1
   Set book2 = Workbooks.Open("E:\Super M\Проект ставки\Поиск решения\Усов 4\БАЗА ДАННЫХ\" & A(n) & " сезон\" & D(m) & "\" & B(e) & "-ое место\" & F(t) & ".xlsx")

   intBe = CInt(B(e)) + 5
   varValue1 = book2.Worksheets("" & F(t) & "").Range("" & G & "").Value
   varValue2 = book2.Worksheets("" & F(t) & "").Range("" & H & "").Value
   'ищемс
   With book1.Worksheets("Лист1").Range("A1:CV808")

    Set r = .Find(What:="" & F(t) & "", LookAt:=xlWhole, LookIn:=xlValues)
    If Not r Is Nothing Then
        firstAddress = r.Address
        Do
         'условие для страны
         'прошлый сезон
         If r.Offset(3, 0).Text = D(m) And A(n) = "прошлый" Then
         r.Offset(intBe, 5).Value = varValue1
         r.Offset(intBe, 6).Value = varValue2
         End If
         'допрошлый сезон
        If r.Offset(3, 0).Text = D(m) And A(n) = "допрошлый" Then
        r.Offset(intBe, 3).Value = varValue1
        r.Offset(intBe, 4).Value = varValue2
        End If
         'додопрошлый сезон
         If r.Offset(3, 0).Text = D(m) And A(n) = "додопрошлый" Then
        r.Offset(intBe, 1).Value = varValue1
        r.Offset(intBe, 2).Value = varValue2
        End If

        Set r = .FindNext(r)

        Loop While Not r Is Nothing And r.Address <> firstAddress
    End If
    End With
    book2.Close
    Next e
   book1.Save
   Label2:
   Next n
   Next m
   Next t
   book1.Save
   book1.Close
   Exit Sub
   Label1:
   On Error Resume Next
   GoTo Label2
   End Sub  

推荐答案

您没有正确退出错误处理程序-您正在使用 GoTo 而不是 Resume .因为遇到第二个错误时您实际上仍处于错误处理代码中,所以无法捕获该错误.

You are not exiting from your error-handler correctly - you are using a GoTo instead of a Resume. Because you were effectively still within the error-handling code when you encountered the second error, the error was not able to be trapped.

因此,更改

GoTo Label2

Resume Label2

这篇关于出现错误时,转到&lt; label&amp; gt;(错误地起作用)的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆