2013-05-09 163 views
0

如果這個問題聽起來太基本的,我告訴我有Excel的VBA零經驗。我已經嘗試過使用Dim和數組,但是我沒有實現我的目標。我要麼得到錯誤,要麼無限循環。Excel的自動替換宏

基本上我有5個不同的舊文本替換,我想,這樣它們都被刪除創建一個數組,周圍循環。

Sub AutoReplace() 

Dim myArray(1 To 5) As String 
myArray(1) = "Text1" 
myArray(2) = "Text2" 
myArray(3) = "Text3" 
myArray(4) = "Text4" 
myArray(5) = "Text5" 

For Each item In myArray 
ActiveCell.Select 
ActiveCell.Columns("A:A").EntireColumn.Select 

    Selection.Replace What:=item, Replacement:="", LookAt:=xlPart, _ 
     SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _ 
     ReplaceFormat:=False 
Next item 

End Sub 

我正在尋找關於我的代碼出了什麼問題的建議,或者完全不同的方法。我只在上面提到的最終目標。

+0

爲什麼你使用'ActiveCell'並選擇它每一次?此外,如果你「得到錯誤」,你也應該說錯誤是什麼,在哪一行代碼。 – Voitcus 2013-05-09 06:58:09

+0

見,我已經告訴了我一個完整的noob,所以我可能並不完全知道解釋所有的事情我想。我的問題不是解決一行代碼中的特定錯誤,而是關於實現函數的目標。 – 2013-05-09 08:01:13

回答

2

試試下面的代碼。避免使用選擇/激活。要知道爲什麼點擊這個link。 也可以明確地像其他Sheets("sheet1").Columns("A:A")工作表名稱將採取ActiveSheet

Sub AutoReplace() 

    Dim myArray(1 To 5) As String 
    myArray(1) = "Text1" 
    myArray(2) = "Text2" 
    myArray(3) = "Text3" 
    myArray(4) = "Text4" 
    myArray(5) = "Text5" 

    For Each Item In myArray 

     Columns("A:A").Replace What:=Item, Replacement:="", LookAt:=xlPart, _ 
          SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _ 
          ReplaceFormat:=False 
    Next Item 

End Sub 
+0

工作很好,謝謝你。 – 2013-05-09 08:02:14