VBA Excel SendKeys 宏
Posted
技术标签:
【中文标题】VBA Excel SendKeys 宏【英文标题】:VBA Excel SendKeys Macro 【发布时间】:2015-06-17 18:38:24 【问题描述】:我在工作表提取中有一些结果数据,我需要逐个单元格激活并按 Enter。 10 个单元格没问题,但我有超过 40 000 个。所以我写了一些宏
Sub Refresh()
Dim lastrow As Long
lastrow = ActiveWorkbook.Worksheets("Extract").Range("Q" & rows.Count).End(xlUp).Row
For j = 2 To lastrow
Sheets("Extract").Activate
Sheets("Extract").Range("Q" & j).Select
Application.SendKeys "F2"
Application.SendKeys "ENTER"
DoEvents
Next j
End Sub
而且它不起作用。我遇到 1004 错误应用程序定义或对象定义错误。
我做错了什么?
感谢您的帮助
编辑: 解决方案很简单。我没有激活工作表提取。 我在代码中添加了新行,一切正常。
感谢您的所有帮助。
【问题讨论】:
您在哪一行收到错误消息? 您想要(或必须)保持相同的程序吗?我们可以完全删除输入并让它循环通过您的事件吗?为什么必须按 Enter 才能使事件生效? 我在这里读到的:mrexcel.com/forum/excel-questions/… 是 application.sendkeys 可以通过在一个接一个地使用时增加一点延迟来帮助。也许你可以试一试?没有上下文就很难提供更多帮助! 如果到选定的单元格将被发送 F2 并移动到 Q 列中的下一个单元格就足够了 【参考方案1】:试试这个:
Sub Refresh()
Dim lastrow As Long
Worksheets("Extract").Activate
lastrow = Range("Q" & Rows.Count).End(xlUp).Row
For j = 2 To lastrow
Range("Q" & j).Select
Application.SendKeys "F2"
Application.SendKeys "ENTER"
DoEvents
Next j
End Sub
编辑#1:
此版本将删除“chatter:**”
Sub Refresh()
Dim sOLD As Worksheet
Set sOLD = ActiveSheet
Application.ScreenUpdating = False
Dim lastrow As Long
Worksheets("Extract").Activate
lastrow = Range("Q" & Rows.Count).End(xlUp).Row
For j = 2 To lastrow
Range("Q" & j).Select
Application.SendKeys "F2"
Application.SendKeys "ENTER"
DoEvents
Next j
sOLD.Activate
Application.ScreenUpdating = True
End Sub
【讨论】:
谢谢 :) 是的,这很好用。只有快速的问题。当我运行宏时,所有更改对我都是可见的(我看到提取表和那里发生的所有操作)。如何设置这个宏运行更不可见?我不想看到提取表中发生了什么。 @LukeJ 查看我的 EDIT#1 这很奇怪,但它只适用于前 40 行。范围内的其余部分已删除。【参考方案2】:看起来您正在循环使用j
,但在您的代码中,引用了i
行中的单元格。
For j = 2 To lastrow
Sheets("Extract").Range("Q" & i).Select
它们需要更改以匹配,即将i
更改为j
。
【讨论】:
是的菜鸟错误但仍然:范围类的选择方法失败 您是否激活了“提取”工作表?如果没有,您要么必须激活它,要么使用Application.GoTo
命令。
如果注释掉range后面的事件,是否还会发送Range错误?如果不是,是什么导致它发送错误?【参考方案3】:
我决定使用 Gary's Student 提供的宏的日子已经到来(直到现在我都在使用我的方法)。所以我再次运行宏,我很惊讶,但宏只适用于前 39 行。
当我评论这一行时
'Application.ScreenUpdating = False
它工作正常,但我看到宏是如何逐行运行的(我不想看到)
什么可能导致问题?
【讨论】:
以上是关于VBA Excel SendKeys 宏的主要内容,如果未能解决你的问题,请参考以下文章