2017-03-09 98 views
1

我有一個關於小宏代碼的問題。這個宏使我選擇的單元格發表評論或代碼依賴於!字符。我將它分配給一個按鈕。但是第二部分運行(ElseIf Left(Cells,1)=「!」...)比第一部分慢(如果Left(Cells,1)<> ...)。我做錯了什麼?Slow Cells.Replace函數

在此先感謝。

Sub COMMENT() 

Dim Cells As Range 

For Each Cells In Range(Selection.Cells.Address) 

    If Left(Cells, 1) <> "!" Then 
    Cells = "!" & Cells 

    ElseIf Left(Cells, 1) = "!" Then 
    Cells.Replace "! ", "", xlPart 

    End If 

Next 

End Sub 
+1

是否有應該是感嘆號之後的空間? – Rory

+0

爲什麼不把它們合併成一個if語句?開始於:如果Left(Cells,1)=「!」然後Cells.Replace「!」,「」,xlPart Else Cells =「!」 &Cells這會保存一條if語句,從而加速你的代碼。此外,爲什麼使用xlPart取代如果您正在尋找第一個感嘆號? – Luuklag

+0

沒有必要,但如果可能的話它會很好。 – salim

回答

1

由於@Rory指出,在下面的代碼行似乎有一個錯誤的空間。 「!」

Cells.Replace, 「」,xlPart

嘗試以下操作:

Sub COMMENT() 
    Dim Cell As Range 
    For Each Cell In Selection 
     Cell = IIf(Left(Cell, 1) = "!", Right(Cell, Len(Cell) - 1), "!" & Cell) 
    Next 
End Sub