2013-09-25 5 views
0

Я пытаюсь компенсировать активную ячейку до тех пор, пока не будет выполнено определенное условие. То, что я написал, этоОшибка 1004 при попытке смещения активной ячейки

Do While ActiveCell.Value <> Worksheets("Unit B").Range("D1").Value 
    ActiveCell.Offset(0, 1).Select 
Loop 

Не могли бы вы помочь мне исправить это?


Давать весь мой код для справки:

Private Sub CommandButton1_Click() 

Dim ddsdata As Range 

Dim i As Long 
i = 1 

Worksheets("Unit B").Select 
Set ddsdata = Worksheets("Unit B").Range("E3:E35") 
Worksheets("Data Sheet").Select 
Worksheets("Data Sheet").Range("E1").Select 

Do While ActiveCell.Offset(0, i) <> Worksheets("Unit B").Range("D1").Value 
i = i + 1 

Loop 

ActiveCell.Offset(1, i).Select 
ActiveCell.Value = ddsdata 
+0

как данные выложены в листе 'Data Sheet'? Это в столбцах или строках? и что вы пытаетесь сделать? можете ли вы лучше объяснить? –

+0

Я пытаюсь сохранить данные, введенные в «Единице B» в «Лист данных». «Единица B» имеет форму (32 строки), которая заполняется ежедневно, и данные должны храниться по дате в «Лист данных» без стирания предыдущих данных. Лист данных имеет одинаковую форму со всеми датами в месяц в последовательных столбцах. То, что я пытаюсь сделать, - это посмотреть дату в «Единице B» и сопоставить ее с данными в «Лист данных», а затем вставить данные – user2814837

+0

любые изменения, которые вы могли бы предоставить образец скриншота или книги? мне очень сложно представить, что вы на самом деле делаете, и как ваши данные выкладываются. Будьте бдительны, если вы показали нам свои «Единицы B» и «Лист данных» до и после копирования соответствующих данных. –

ответ

0

Try ниже код. Избегайте использования Select/Activate/ActiveCell в вашем коде. Также всегда ссылайтесь на ячейку по имени листа, затем на ячейку. например, Sheet1.Range("A1") в книге, чтобы получить лучшие результаты.

Private Sub CommandButton1_Click() 

    Dim ddsdata As Range 

    Dim i As Long 
    i = 1 

    Thisworkoook.Activate 
    Set ddsdata = Thisworkoook.Sheets("Unit B").Range("E3:E35") 

    Do While Worksheets("Data Sheet").Range("E1").Offset(0, i) <> Worksheets("Unit B").Range("D1").Value 
      i = i + 1 
    Loop 

    ActiveCell.Offset(1, i).Select 
    ActiveCell.Value = ddsdata 

End Sub 
+0

@mehow Спасибо за редактирование. – Santosh

+0

Такая же ошибка отображается в инструкции Do While – user2814837

+0

@ user2814837 Какое сообщение об ошибке? – Santosh

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