2015-11-05 43 views
1

我想改變一些現有的代碼以適應插入兩行。代碼看起來很合理,但它一直給我調試錯誤找不到單元格。該代碼有一個1爲偏移值,它工作正常。一旦我添加了兩行,我將Offset值更改爲3,但之後它開始給我一個調試錯誤。獲取調試錯誤「沒有找到單元格」

With Sheets("Main") 
     .Range("A1").CurrentRegion.AutoFilter field:=5, Criteria1:="SC Link" 
     .Range("A1").CurrentRegion.Offset(1).SpecialCells _ 
      (xlCellTypeVisible).EntireRow.Delete 
     .Range("A1").CurrentRegion.AutoFilter 
    End With 

兩行相加後:

With Sheets("Main") 
     .Range("A1").CurrentRegion.AutoFilter field:=5, Criteria1:="SC Link" 
     .Range("A1").CurrentRegion.Offset(3).SpecialCells _ 
      (xlCellTypeVisible).EntireRow.Delete 
     .Range("A1").CurrentRegion.AutoFilter 
    End With 

有誰看到什麼我不知道兩行相加之前?

+0

屏幕上的數據如何在表單上顯示將有所幫助 –

+0

您還可以發佈添加了兩行的代碼嗎? – BruceWayne

回答

1

我不知道這是否是您的問題,但在使用SpecialCells時,如果您使用的區域可能在工作表的UsedRange之外(它並不總是會重置)當你所期望的)

如:

與空單開始,僅在第一行添加一些數據(A1說:F1)

然後運行這個

Dim r As Range 
Set r = Range("A1").CurrentRegion.Offset(1,0).SpecialCells(xlCellTypeBlanks) 

...給出運行時錯誤,因爲第二行不在當前UsedRange範圍內。

如果您在(例如)J10中輸入一個值,然後重新運行上面的代碼,它將不會再提供錯誤。 如果您從J10中刪除該值,代碼將繼續運行而不會發生錯誤,因爲UsedRange不會自動重置。如果您在即時窗格中運行

? ActiveSheet.UsedRange.Address() 

那麼將重置UsedRange並且SpecialCells將再次導致運行時錯誤。

相關問題