【问题标题】:Excel Auto-Replace MacroExcel 自动替换宏
【发布时间】:2013-05-09 15:24:33
【问题描述】:

如果这个问题听起来太基础,我说我对 Excel VBA 的经验为零。我已经尝试过使用 Dim 和数组,但我没有实现我的目标。我要么得到错误,要么出现无限循环。

基本上我有 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

我正在寻找关于我的代码有什么问题的建议,或者是一种完全不同的方法。我只是在上面提到的最终目标。

【问题讨论】:

  • 为什么每次都选择ActiveCell?此外,如果您“遇到错误”,您还应该说明错误是什么以及在哪一行代码。
  • 看,我已经说过我是一个完全的菜鸟,所以我可能并不完全知道我正在尝试的所有事情的解释。我的问题不是要解决一行代码中的特定错误,而是要实现函数的目标。

标签: excel vba


【解决方案1】:

试试下面的代码。避免使用选择/激活。要知道为什么点击这个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

【讨论】:

    猜你喜欢
    • 2018-04-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-09-19
    • 1970-01-01
    • 1970-01-01
    • 2019-10-11
    • 1970-01-01
    相关资源
    最近更新 更多