2015-02-25 2 views
1

Я пытаюсь создать VBA для этой функции - удалять строки, если ячейка в столбце A содержит «BG01». Имя заголовка для столбца А «Платежный центр»Ошибка VBA: Ошибка 1004: Ошибка Диапазон методов объекта _workheet failed

Но когда я запускаю макрос, он показывает: Ошибка диапазона Метод объекта _worksheet не удалось

row_number = 1 

Do 
    DoEvents 
    row_number = row_number + 1 
    Payment_Center = Sheet1.Range("A" & row_number) ' <~~~~~ Error occurs here 

    If InStr(Payment_Center, "BG01") >= 1 Then 
     Sheet1.Rows(row_number & ":" & row_number).Delete 
     row_number = row_number - 1 
    End If 

Loop Until Payment_Center = " " 

ответ

0

ошибка происходит потому, что объект диапазон должен быть изменен с помощью ключевое слово Set.

Set Payment_Center = Sheet1.Range("A" & row_number) 

и ваш цикл должен выглядеть

row_number = 1 

Do 
    DoEvents 
    row_number = row_number + 1 
    Set Payment_Center = Sheet1.Range("A" & row_number) ' 

    If InStr(Payment_Center, "BG01") >= 1 Then 
    Sheet1.Rows(row_number & ":" & row_number).Delete 
    row_number = row_number - 1 

    End If 

    ' reset Payment_Center range using new row number 
    set Payment_Center = Sheet1.Range("A" & row_number) 

Loop Until Payment_Center = " " 

и он должен работать

было бы также помочь кодирования и отладки, если у вас Option Explicit в верхней части все ваш код модулей , и объявили все переменные должным образом, например

Dim row_number As Integer 
Dim Payment_Center as Range 
+0

Привет, спасибо за ответ. Тем не менее, теперь он показывает ошибку времени выполнения 424. Объект, требуемый в этом разделе Loop Until Payment_Center = "" – Siti

+0

, потому что после изменения диапазона или удаления строки диапазон 'Payment_Center' больше не установлен, поэтому вы должны установить его снова в цикле –

+0

@Siti: Я отредактировал свой ответ, чтобы дать больше информации, и изменил ваш цикл. –

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