VBA Excel SendKeysmacros
我有一些结果数据在表Extract,我需要激活逐个细胞,然后按回车。 10个单元没关系,但我有4万多个。所以我写了一些macros
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错误应用程序定义或对象定义的错误。
我做错了什么?
感谢帮助
编辑:解决scheme很简单。 我没有激活Sheet Extract。 我已经添加了新的代码行,一切工作正常。
感谢你的帮助。
试试这个:
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:
这个版本将删除“喋喋不休:**
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
它看起来像循环使用j
但在你的代码中,引用行i
的单元格。
For j = 2 To lastrow Sheets("Extract").Range("Q" & i).Select
他们需要改变匹配,即改变i
为j
。
当我决定使用Gary的学生提供的Macro(到现在我正在使用我的方法)的时候,这一天已经到来。 所以我再次运行macros,我很惊讶,但macros只崇拜前39行。
当我发表评论这一行
'Application.ScreenUpdating = False
它工作正常,但我看到macros如何逐行运行(我不想看到)
什么会导致问题?