Excel VBA迭代所有使用的单元格并replace它们的值
这是我第一次使用VBA和Excel工作,而我的问题可能是由于我本人缺乏知识而造成的。
我有一个城市名称的列表( 包含800个项目,因此我正在寻找自动replace它们 )和一些文本,其中“城市名称”一词出现多次,需要被正确的城市名称,在我的设置中这将是同一行中的第一列单元格的值 。
所以我发现: 如何遍历Excel VBA或VSTO 2005中的所有单元格
并通过查看Excel VBA参考find了InStr和Substitute函数。
使用像这样的迭代工作正常:
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