当出现“运行时错误1004”时,我希望程序跳过部分代码并继续工作。第一个变量正常工作,但第二个“运行时错误1004”再次弹出。
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
答案 0 :(得分:1)
您没有正确退出错误处理程序 - 您使用的是GoTo
而不是Resume
。因为当您遇到第二个错误时,您仍然有效地处于错误处理代码中,因此无法捕获错误。
因此,改变
GoTo Label2
到
Resume Label2