Как установить значение ячейки = для цикла? - PullRequest
0 голосов
/ 21 ноября 2011

У меня есть этот код ниже.Как я могу установить значение ячейки в = что проходит через это значение?

Sub Test2()
      ' Select cell A2, *first line of data*.
      Range("A2").Select
      ' Set Do loop to stop when an empty cell is reached.
      Do Until IsEmpty(ActiveCell)
         ' Insert your code here.
         ' Step down 1 row from present location.
         ActiveCell.Offset(1, 0).Select
      Loop
   End Sub

1 Ответ

6 голосов
/ 22 ноября 2011

Мой ответ будет лучше выглядеть как комментарий, но он слишком длинный, чтобы уместиться в комментарии (и не может быть правильно отформатирован).

Как зациклить диапазон

Я советую вам взглянуть на страницу Чипа Пирсона , посвященную оптимизации VBA, особенно циклически изменяя диапазон в VBA.

Когда вы перебираете диапазон, вы должны использовать оператор for each, как описано в этом примере:

Dim WS as Worksheet
For Each WS In Worksheets
    MsgBox WS.Name
Next WS

Dim i as Integer
For i = 1 To Worksheets.Count
    MsgBox Worksheets(i).Name
Next i

Поиск последней пустой ячейки

Ваш код пытается найти последнюю пустую ячейку. Вы можете сделать это легко с

With ActiveWorkbook.Worksheets("Sheet1")
    .Cells(.Rows.Count,1).End(xlUp)
End With

Вы можете найти еще несколько советов по ozgrid (даже если они не используют rows.count)

Избегание выбора

Ваш код будет очень очень медленным , если вы попытаетесь Select каждой ячейке в цикле.

Вам лучше использовать объектную модель VBA.
Например, если вы хотите скопировать значение ячейки:

Не делай

Range("A1").Select
Selection.Copy
Range("A2").Select
Selection.Paste

У

Range("A2").Value = Range("A1").Value
...