Excel VBA迭代所有使用的单元格并替换其值

Excel VBA迭代所有使用的单元格并替换其值,vba,excel,Vba,Excel,这是我第一次使用VBA和Excel,我的问题可能是因为我对VBA和Excel知识的严重缺乏 我有一个单列城市名称列表(包含800个项目,因此我希望自动替换它们)和一些文本块,其中术语“cityname”出现多次,需要替换为正确的城市名称,在我的设置中,这将是同一行中第一列单元格的值 所以我发现: 通过查看Excel VBA参考,找到了InStr和Substitute函数 像这样使用迭代效果很好: Sub MySubstitute() Dim cell As Range F

这是我第一次使用VBA和Excel,我的问题可能是因为我对VBA和Excel知识的严重缺乏

我有一个单列城市名称列表(包含800个项目,因此我希望自动替换它们)和一些文本块,其中术语“cityname”出现多次,需要替换为正确的城市名称,在我的设置中,这将是同一行中第一列单元格的

所以我发现:

通过查看Excel VBA参考,找到了InStrSubstitute函数

像这样使用迭代效果很好:

Sub MySubstitute()
    Dim cell As Range
        For Each cell In ActiveSheet.UsedRange.Cells
            If InStr(cell.Value, "cityname") > 0 Then
                MsgBox "Hello World!"
        End If
    Next cell
End Sub
我的工作表(只有两行的测试表)中的每个“cityname”都有一个消息框

然而,当我添加我真正想要实现的内容时,我得到一个运行时错误(1004):

Sub MySubstitute()
    Dim cell As Range
    For Each cell In ActiveSheet.UsedRange.Cells
        If InStr(cell.Value, "cityname") > 0 Then
            cell.Value = WorksheetFunction.Substitute(cell.Value, "cityname", Cells(cell.Row, A))
        End If
    Next cell
End Sub
所以我猜这句话有点不对劲,但我不知道是什么。任何关于我的错误的提示都将不胜感激,谢谢:)

您可以使用该方法并立即全部替换,无需重复

Sub MySubstitute()
    Dim rng As Range
    Set rng = ActiveSheet.UsedRange.Cells
    rng.Replace "cityname", "correctcityname", xlPart
End Sub
您可以使用该方法一次替换所有对象,无需迭代

Sub MySubstitute()
    Dim rng As Range
    Set rng = ActiveSheet.UsedRange.Cells
    rng.Replace "cityname", "correctcityname", xlPart
End Sub
您应该更改:

 cell.Value = WorksheetFunction.Substitute(cell.Value, "cityname", Cells(cell.Row, A))

您应该更改:

 cell.Value = WorksheetFunction.Substitute(cell.Value, "cityname", Cells(cell.Row, A))


它也可以是
单元格(cell.Row,“A”)
它也可以是
单元格(cell.Row,“A”)
如果我有一个正确的城市名称,这就行了。但是我有一个800的列表,所以每次都必须从与当前单元格相同的行的第一个单元格中获取正确的一个,因此需要迭代。谢谢你的努力!如果我有一个正确的城市名称,这就行了。但是我有一个800的列表,所以每次都必须从与当前单元格相同的行的第一个单元格中获取正确的一个,因此需要迭代。谢谢你的努力!