2014-10-03 4 views
0

У меня 2 вопроса:VBA 1004 Ошибка при попытке разобрать слом данные

У меня есть 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

ответ

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 пусто. Для этого вы можете просто использовать Data> Filter.

Вы также можете использовать Data> Filter в макросе, и поскольку вы используете VBA в любом случае, нет причин для цикла.

Смежные вопросы