2017-08-16 68 views
0

我一直在为此工作了几个小时,但无法使其工作到目前为止。循环直到出现错误424

我有一些过滤的数据,我想将第一个数据单元存储为循环中使用的变量。但是,一旦我的循环删除了所有的数据,它应该自行结束,我收到一个424错误,需要的对象。

代码

Sub jjjjj() 

Dim rng As Range 

ActiveSheet.AutoFilter.Range.Offset(1).SpecialCells(xlCellTypeVisible).Cells(1, 9).Select 

Set rnge = Selection 

Do Until (rnge.value = 0)   
    Range("i1").Activate 
    Selection.End(xlDown).Select 
    Selection.EntireRow.Delete     
Loop 

End Sub 

错误线Do Until (rnge = 0)

我已经试过Do until (rnge.value = "")

除了取出value

任何帮助将不胜感激。

+0

如何rnge.Value达到零值? – jsotola

+0

我只是猜测在这里,我试过“”,那也不管用。基本上代码删除所有的数据,但不会因为单元格'ActiveSheet.AutoFilter.Range.Offset(1).SpecialCells(xlCellTypeVisible).Cells(1,9).Select'选择没有数据在其中。 – Sky

回答

0

我觉得你像下面的代码后,该代码注释中解释:

Option Explicit 

Sub jjjjj() 

Dim FiltRng As Range 
Dim Rng As Range, C As Range 

' set the filtered range 
Set FiltRng = ActiveSheet.AutoFilter.Range.Offset(1).SpecialCells(xlCellTypeVisible) 

' loop through areas of Filtered range 
For Each Rng In FiltRng.Areas 
    ' loop through cells in column "I" of current area 
    For Each C In Rng.Columns("I") 
     If C.Value = 0 Then Exit Sub ' if value is 0 exit sub 
     C.EntireRow.Delete 
    Next C 
Next Rng 

End Sub 
+0

谢谢Shai,但我收到一个运行时错误13,在'如果C.Value = 0然后退出子'如果值为0退出子'。我对vba还是比较陌生的,因此不确定如何解决它。 – Sky