【问题标题】:Loop from active cell to first empty cell从活动单元格循环到第一个空单元格
【发布时间】:2019-01-11 13:30:08
【问题描述】:

我已经记录并调整了一个选择单元格(F2)然后输入该单元格中已经存在的信息的代码。

Sub testing()
'
' testing Macro
'
' Keyboard Shortcut: Ctrl+Shift+T
'
    ActiveCell.Select
    Application.SendKeys "{F2}"
    Application.SendKeys "{ENTER}"
    ActiveCell.Offset(1, 0).Range("A1").Select
End Sub

我需要这样做是因为我有一个带有公式的摘要,这些公式使用索引匹配查找数据中的信息,我从我们的帐户系统的导出中粘贴了这个。如果不针对可能有数万个单元格完成此任务,公式将无法识别数字。

我试图让这个循环从我激活宏时选择的任何单元格开始,并在它到达一个空单元格时结束。它不会每次都从同一个单元格开始,因为我希望它每次都在不同的工作表上工作。

我发现代码每次都从特定单元格开始然后停止,但是当我将其调整为从活动单元格开始时它崩溃了。替代代码不会停留在数据底部,直到 Excel 崩溃。

【问题讨论】:

    标签: excel vba


    【解决方案1】:

    试试这个:

    Sub refresher()
        While ActiveCell.Value <> ""
            Application.SendKeys "{F2}"
            Application.SendKeys "{ENTER}"
            DoEvents
            ActiveCell.Offset(1, 0).Select
        Wend
    End Sub
    

    它将向下移动一列,刷新每个单元格,直到找到一个空白。

    【讨论】:

      【解决方案2】:

      尝试保存活动单元格行并使用 .end 函数来支持:

         dim ac as long, col as long, ec as long, i as long
         ac = activecell.row
         col = activecell.column
         ec = cells(ac,col).end(xldown).row
         for i = ac to ec
             'do something with cells(i,col)
         next i
      

      【讨论】:

        猜你喜欢
        • 2019-03-14
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多