Excel VBA迭代所有使用的单元格并replace它们的值

这是我第一次使用VBA和Excel工作,而我的问题可能是由于我本人缺乏知识而造成的。

我有一个城市名称的列表( 包含800个项目,因此我正在寻找自动replace它们 )和一些文本,其中“城市名称”一词出现多次,需要被正确的城市名称,在我的设置中这将是同一行中的第一列单元格

所以我发现: 如何遍历Excel VBA或VSTO 2005中的所有单元格

并通过查看Excel VBA参考find了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 

我在我的工作表中获得每个“城市名”的消息框( 仅有2行的testing表 )。

但是,当我添加我真正想要实现我得到一个运行时错误(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 

所以我想这个方面的东西是错的,但是我弄不清楚是什么。 任何提示,我的错误是赞赏,谢谢:)

你应该改变:

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

通过

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

您可以使用Range.Replace方法,并立即全部replace,无需迭代。

 Sub MySubstitute() Dim rng As Range Set rng = ActiveSheet.UsedRange.Cells rng.Replace "cityname", "correctcityname", xlPart End Sub