2014-10-03 155 views
0

我有2個問題時,1004錯誤:VBA試圖解析報廢數據

我有4000行刮數據從一個網站,我試圖清理並獲取相關數據(從列BG)所有非空行。

此代碼產生1004運行時錯誤,在調試器中突出顯示了設置範圍。

Sub Schaltfläche1_Klicken() 
Dim i As Integer 
Dim j As Integer 
Dim varRangeselect1 As Range 
Dim varRangeSelect2 As Range 

For i = 1 To 20 
    j = 1 
    If Worksheets("Input").Cells(i, 2).Value <> "" Then 
     Set varRangeselect1 = Worksheets("Input").Range(Cells(i, 1), Cells(i, 7)) 
     Set varRangeSelect2 = Worksheets("Output").Range(Cells(j, 1), Cells(j, 7)) 
     varRangeselect1.Copy 
     varRangeSelect2.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False 
     j = j + 1 
    End If 
Next i 

End Sub 

在輸出紙張我希望數據發佈的第一行是空的,是j的使用這裏適合這項任務?

非常感謝你

+0

通過縮進代碼,我可以看到'j = 1'被設置在循環中。在循環之外會更好,所以它不會每次都覆蓋第1行。 – SeanC 2014-10-03 14:17:52

回答

1

你需要完全限定範圍。例如

Set varRangeselect1 = Worksheets("Input").Range(_ 
               Worksheets("Input").Cells(i, 1), _ 
               Worksheets("Input").Cells(i, 7) _ 
               ) 
Set varRangeSelect2 = Worksheets("Output").Range(_ 
               Worksheets("Output").Cells(j, 1), _ 
               Worksheets("Output").Cells(j, 7) _ 
               ) 

如果細胞的對象不是完全合格的,那麼你會得到1004應用程序定義的錯誤。

1

你真的不清理。你所要做的只是刪除列B中的值爲空的行。爲此,您可以使用數據>過濾器。

您也可以在宏中使用數據>過濾器,並且由於您正在使用VBA,因此無需循環。