1004,使用`.End(xlDown)`函数将Range设置为变量时的应用程序定义或对象定义错误

时间:2018-01-24 12:27:01

标签: vba loops range

我写了一个代码来删除第五列中的单元格值为0的行:

Sub deletedata()

Dim i As Integer
Dim n As Integer
Dim ws3 As Worksheet
Set ws3 = ThisWorkbook.Worksheets("3.Calidad CREDITICIA")
Dim r As Range
Set r = ws3.Range("E20", Range("E20").End(xlDown))
n = r.Cells.Count

With ws3
         For i = n + 20 To 20
            If IsNumeric(.Cells(i, 5)) And .Cells(i, 5) = 0 Then
                .Rows(i & ":" & i).Delete
            End If
            Next i
    End With

End Sub

当它到达我设置r范围的指令时:Set r = ws3.Range("E20", Range("E20").End(xlDown))我得到1004错误:

  

1004,应用程序定义或对象定义

我已经尝试了很多东西,他们之间我尝试了一个MyCell循环,但是在设置范围时我仍然遇到错误 ¿有人能告诉我我做错了什么吗?

1 个答案:

答案 0 :(得分:0)

问题可能与隐含引用ActiveSheet

有关
                        ' Right here
Set r = ws3.Range("E20", Range("E20").End(xlDown))

请改为尝试:

Set r = ws3.Range("E20", ws3.Range("E20").End(xlDown))