我对Excel VBA很新颖(大约一天前开始!),但我正在慢慢挣扎。如果列D包含值“(2)”,然后将值“0”分配给同一行中的更多单元格,我创建了一个公式将三个单元格的选择复制到工作表的另一部分。清理凌乱的VBA公式
问题是,我用录音和键入我的宏的混合,所以最终的结果是相当混乱。目前这个宏需要一段时间才能完成(它会移动一切,然后稍微出现一个沙漏15秒左右)。我假设这部分是由于我使用了“选择”(我知道这是一件坏事!),但我只是试图弄清楚我可以从公式中去掉什么,以使它更高效保持相同的结果。
Sub MoveNames()
Dim SrchRng As Range, cel As Range
Set SrchRng = Range("D:D")
For Each cel In SrchRng
If InStr(1, cel.Value, "(2)") > 0 Then
cel.Offset(0, 1).Range("A1:C1").Select
Selection.Copy
ActiveCell.Offset(-1, 40).Range("A1").Select
ActiveSheet.Paste
Application.CutCopyMode = False
ActiveCell.Offset(0, -4) = "0"
ActiveCell.Offset(0, -5) = "0"
ActiveCell.Offset(0, -6) = "0"
ActiveCell.Offset(0, -7) = "0"
ActiveCell.Offset(0, -10) = "0"
ActiveCell.Offset(0, -12) = "0"
End If
Next cel
End Sub
任何帮助将不胜感激。
非常感谢大家。所有这些都运作良好。从现在开始,我会记得在“代码评审”中对工作代码提出任何问题。 – Antony
绝对将其发送给CR,我们有一个积极的,经验丰富的VBA社区,他们很乐意帮助你。 – Kaz
就像旁边一样,**大幅度提高执行速度的最简单方法是在代码开始处放置Application.ScreenUpdating = False Application.EnableEvents = False,然后将它们设置回True。在代码的最后。 – Kaz