2013-02-11 4 views
0

У меня есть столбец А, состоящий из разных имен. Я пытаюсь выяснить, как скопировать выбранный элемент в первую пустую ячейку в столбце F. Это то, что я сделал до сих пор:Смещение до тех пор, пока не найдены пустые ячейки Найдено

Sub CopyFill() 
If Range("F3") = Empty Then 
    ActiveCell.Copy Range("F3") 
ElseIf Range("F3") <> Empty Then 
    ActiveCell.Copy Range("F3").Offset(1, 0) 
End If 
End Sub 

Но дело в том, что я не могу понять, как применять функция DoUntil здесь, чтобы сохранить смещение до тех пор, пока я не найду пустую ячейку, которую excel заполнит моим текущим выбором.

Большое спасибо за ваше время и внимание.

P.S. Я использую F3, потому что это, когда столбец начинается для меня в этом файле.

ответ

1

Наиболее эффективный способ добиться того, что вы хотите, это следующая строка кода:

 
ActiveCell.Copy Range("F:F").Find(What:="", After:=Range("F3"), LookIn:=xlFormulas, LookAt _ 
     :=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:= _ 
     False, SearchFormat:=False) 

.Find будет делать именно то, что вам нужно.

Если вы хотите сделать петлю вручную (что будет гораздо медленнее), вы можете использовать этот код:

 
Sub CopyFill() 
    Dim rng As Range 

    Set rng = Range("F3") 
    While rng.Value "" 
     Set rng = rng.Offset(1) 
    Wend 

    ActiveCell.Copy rng 

End Sub 

Вместо While Condition ... Wend вы можете также использовать Do While condition ... Loop или Do Until Not condition ... Loop.

+0

Большое спасибо за помощь, Питер Альберт! – Dan

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