使用循环删除具有特定字符串的行时,子索引超出间隔(错误9)

时间:2018-01-19 11:54:03

标签: string vba loops rows

我有以下代码旨在删除第3列中包含的字符串的前两个字母不是“SW”的行,用于工作簿的工作单2和3:

Sub Summrize()

Dim n As Integer
Dim i As Integer
Dim identif As String
Dim idftl As String
Dim ws As Worksheet

For n = 2 To 3
Set ws = ThisWorkbook.Worksheets(i)
    With ws
        For i = 200 To 1 Step -1

        identif = .Cells(i, 3).Value
        idftl = Left(identif, 2)

        If Not idftl = "SW" Then
        .Rows(i & ":" & i).Delete
    End If

    Next i
    End With
Next n

End Sub

它在第二个循环的开头停止(这是For i = 200 To 1 Step -1)并且我得到错误:

  

错误9:超出间隔的子索引

我尝试过很多东西,但无法达到错误。

3 个答案:

答案 0 :(得分:2)

我相信你不小心使用了i代替了以下行中的n:

Name    Vol Tot Start Date  End Date
xxxx    433 42  20/10/2017  01/09/2018

我此时尚未宣布。因此,它默认为0,并且您没有工作表编号0.

答案 1 :(得分:1)

它可以帮助您设置书签并观看“查看/本地”窗口,也可以悬停变量以查看当前值。

答案 2 :(得分:0)

应该是: 设置ws = ThisWorkbook.Worksheets(n)

代替: 设置ws = ThisWorkbook.Worksheets(i)