2013-05-09 165 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