【发布时间】:2017-05-24 06:17:28
【问题描述】:
在我的代码中努力处理此错误:“无法获取工作表函数类的匹配属性”
我知道错误意味着从函数中找不到匹配项。问题是我试图告诉程序如果没有找到符合此标准的匹配项,则只需跳过给定的循环迭代。我将错误处理程序放在可能失败的代码的正上方,但它几乎忽略了错误处理程序并给了我一个错误窗口。有什么想法吗?
n = 2
On Error GoTo SkipRun
Do While Sheets("Sheet1").Range("A" & n) <> ""
l = Empty
layercount = Sheets("Sheet1").Cells(n, 11)
startrow = Sheets("Sheet1").Range("B" & n)
EndRow = Sheets("Sheet1").Range("C" & n)
searchRange = "A" & startrow & ":A" & EndRow
l = Application.WorksheetFunction.Match("DLA", Worksheets("Sheet2").Range(searchRange), 0) + startrow - 1
这里出现错误^
Dim steps() As Variant
ReDim steps(1, layercount)
a = 1
Do While a <= layercount
steps(1, a) = Sheets("Sheet2").Range("B" & l + a - 1)
If a = 1 Then
GoTo skiploop
ElseIf a > 1 Then
If steps(1, a) = steps(1, a - 1) Then steps(1, a) = 0
End If
skiploop:
a = a + 1
Loop
SkipRun:
n = n + 1
Loop 'END OF MAIN LOOP
End Sub
【问题讨论】:
-
你是如何声明
searchRange的? -
@BruceWayne searchRange 定义为`searchRange = "A" & startrow & ":A" & EndRow`。这两个变量也是在代码的前面定义的,但为了简单起见,我想我会把它们放在这里。
-
你能把所有的代码都包含进去吗?正如@YowE3k 指出的那样,这可能有几个原因。如果你关闭错误处理会发生什么?
标签: vba excel error-handling match