【发布时间】:2015-06-18 09:30:13
【问题描述】:
我想遍历 Worksheet1 中的 A 列并找到第一个具有指定文本“石油生产”的单元格。此单元格是我希望复制到 Worksheet2 的数组中的第一个单元格。这个单元格和数组的大小会不时改变,因此我使用了代码。然后我将它粘贴到 Worksheet2 中的单元格 B7 中,该单元格永远不会改变。
这是我的公式。我在ActiveSheet.Paste 行收到错误消息
Sub Test()
Application.ScreenUpdating = False
For Each Cell In Sheets("Sheet1").Range("A:A")
If Cell.Value = "Oil Production" Then
ActiveSheet.Cells.Select
Range(ActiveCell, Cells(ActiveCell.End(xlDown).Row, ActiveCell.End(xlToRight).Column)).Select
Selection.Copy
Sheets("Sheet2").Select
Range("B7").Select
ActiveSheet.Paste
End If
Next
End Sub
【问题讨论】:
-
将
ActiveSheet.Cells.Select更改为Cell.Select将解决您的直接问题。也就是说,这段代码在很多层面上都存在缺陷:禁用Application.ScreenUpdating = False进行调试会让你看到你的问题;循环遍历整个 A 列是不必要且缓慢的;使用Select是不必要的,缓慢而脆弱的see here on How -
感谢链接和 cmets