我對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