【问题标题】:VBA Do While Loop Excel Macro [closed]VBA Do While循环Excel宏[关闭]
【发布时间】:2018-01-16 16:34:20
【问题描述】:

我正在尝试创建一个宏,当单击名为“运行公式”的按钮时,它会从 I12 开始复制特定的单元格块,然后向下移动 28 行并粘贴 I40 中单元格块中的公式。然后它循环执行 150 次。 注意:我确实通过录制宏并复制和粘贴 150 次来完成这项工作,但我想编辑代码以使其更简单。 我以前从未使用过 VBA,但这是我目前所拥有的:

    Sub Button6_Click()
    Button6_Click Macro
    Range("I12:AG22").Select
    Selection.Copy
    Dim i As Integer
    i = 0
    Do While i < 150
    Row 40 + i * 28
    i = i + 1
    Loop
    End Sub

【问题讨论】:

  • 您发布的代码不会做您所描述的事情。循环只会增加一个变量(Row);在它增加后,它不会对那个变量做任何事情。为了让它完成任何事情,它必须以某种方式影响细胞。根本不需要对您复制的单元格做任何事情。
  • 请详细描述您希望完成的最终结果
  • 看看我今天早上输入的这个答案:stackoverflow.com/questions/45558891/…这对你有用吗?
  • 您是否正在将一个单元格块(I12:AG22 150 行)复制到 I40?您可以轻松地录制执行此操作的宏。你为什么要一次做一行?

标签: vba excel loops paste


【解决方案1】:

使用 for 循环将节省一些输入。

还要避免使用.Select.Activate

还要养成始终将父工作表分配给任何 Range 或 Cells 对象的习惯。

Sub Button6_Click()
'Button6_Click Macro

Dim i As Long

With Worksheets("Sheet1") 'Change to the name of the sheet
    .Range("I12:AG22").Copy
    For i = 0 to 149
        .Cells(40 + i * 28,"I").PasteSpecial xlPasteFormulas
    Next i
End With
End Sub

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-04-24
    • 1970-01-01
    • 1970-01-01
    • 2016-04-18
    • 1970-01-01
    • 2020-12-30
    • 1970-01-01
    • 2023-03-20
    相关资源
    最近更新 更多