如何设置单元格值=什么是循环?

dig*_*kie 0 excel vba excel-vba excel-2010

我在下面有这个代码.如何将单元格值设置为=循环该值的是什么?

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
Run Code Online (Sandbox Code Playgroud)

JMa*_*Max 6

我的答案看起来更像是一个评论,但它太长而无法放入评论(并且无法正确格式化).

如何循环范围

我建议你看一下关于优化VBA的Chip Pearson页面,特别是在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
Run Code Online (Sandbox Code Playgroud)

找到最后一个空单元格

您的代码似乎试图找到最后一个空单元格.你可以轻松地完成它

With ActiveWorkbook.Worksheets("Sheet1")
    .Cells(.Rows.Count,1).End(xlUp)
End With
Run Code Online (Sandbox Code Playgroud)

您可以在ozgrid上找到更多提示(即使它们不使用rows.count)

避免选择

如果您尝试循环中的每个单元格,您的代码将非常慢Select.

您最好使用VBA 的对象模型.
例如,如果您只想复制单元格的:

不要这样做

Range("A1").Select
Selection.Copy
Range("A2").Select
Selection.Paste
Run Code Online (Sandbox Code Playgroud)

Range("A2").Value = Range("A1").Value
Run Code Online (Sandbox Code Playgroud)