【发布时间】:2021-11-14 02:52:09
【问题描述】:
我不确定在我的代码中插入On Error Resume Next 的位置。 1004 错误出现在Loop Until Cells(c, 1) Like "*" & ISIN & "*" 行。循环应该找到一个数字,如果没有数字,则进入循环中的下一个迭代。出现错误是因为未找到 ISIN 并且它永远循环。似乎更像是第二个Do Loop的问题。
Dim a, b, c As Double
Dim WS1, WS2 As String
Dim ISIN As String
WS1 = "1M_issues"
WS2 = "MI_1"
Sheets(WS2).Select
Range("a1").Select
'Count ISINs to find
a = 1
Do
a = a + 1
Loop Until Cells(a + 1, 1) = ""
'Choose ISIN
For b = 2 To a
ISIN = Sheets(WS2).Cells(b, 1)
'Find ISIN within cells (looping)
Sheets(WS1).Select
c = 1
Do
c = c + 1
Loop Until Cells(c, 1) Like "*" & ISIN & "*"
'Copy CR from general_report to target sheet
Sheets(WS2).Cells(b, 2) = Sheets(WS1).Cells(c, 3)
Next
End Sub
【问题讨论】:
-
好的,简单的问题:如果
ISIN没有出现在 1M_issues 表的 A 列中会发生什么?一个无限循环,这将使 Excel 崩溃!试试rTMP = Sheets(WS1).Find(ISIN, lookAt:=xlWhole): If Not rTMP Is Nothing Then Sheets(WS2).Cells(b, 2).Value = rTMP.Offset(0,2).Value?或者,甚至,Sheets(WS2).Cells(b,2).Value = Application.VLookup("*" & ISIN & "*",Sheets(WS3).Columns("A:C"),3,False)? -
On error Resume Next不会使 Excel 崩溃。它只是隐藏运行时错误(但它们无论如何都会发生!)。除非您确切知道自己在做什么,否则请忘记 Resume Next。那就是说:“崩溃”是什么意思? Excel崩溃并退出?或者你得到一个运行时错误?如果是后者:错误信息是什么?此时c的值是多少?此时单元格的内容是什么? -
它可能最终没有响应,因为找不到 ISIN,它会一直循环到永远。当到达工作表末尾并且地址变得无效时,1004 会上升。
-
找不到号码的情况需要处理。就这么简单。
-
@SozDaneron“未找到,移至下一个”就 VBA 而言不是错误。你想要像
Loop Until (Cells(c, 1) Like "*" & ISIN & "*") Or (c>UsedRange.Rows.Count)这样的东西来限制它查看的行数。