【问题标题】:Find and Replace using IF condition使用 IF 条件查找和替换
【发布时间】:2014-03-17 18:07:00
【问题描述】:

现在我正在使用下面的宏来替换我的大数据中的值。但问题是,替换或替换的值随着每个数据集而变化,如果找不到所需的值,宏会出错。谁能帮助我,我如何使用 IF 条件和 Cells.replace。例如 IF D 找到然后运行此代码块,否则跳转到下一个值。

Sub ReplaceAll()

Application.ScreenUpdating = False

Sheets("Data").Select
Range("A1").Select

Cells.replace what:="D", Replacement:="", LookAt:=xlPart, SearchOrder:= _
    xlByRows, MatchCase:=False, SearchFormat:=False, ReplaceFormat:=False

Cells.replace what:="F", Replacement:="", LookAt:=xlPart, SearchOrder:= _
    xlByRows, MatchCase:=False, SearchFormat:=False, ReplaceFormat:=False

Application.ScreenUpdating = True

End Sub

【问题讨论】:

  • 未找到搜索词时未收到错误消息...
  • 相同,没有触发错误

标签: excel if-statement replace find vba


【解决方案1】:

我不明白为什么会出现错误,但您可以跳过所有错误。

Sub ReplaceAll()

Application.ScreenUpdating = False

On Error Resume Next 'Skip errors

Sheets("Data").Select
With Range("A1")
  .Cells.replace what:="D", Replacement:="", LookAt:=xlPart, SearchOrder:= _
    xlByRows, MatchCase:=False, SearchFormat:=False, ReplaceFormat:=False

  .Cells.replace what:="F", Replacement:="", LookAt:=xlPart, SearchOrder:= _
    xlByRows, MatchCase:=False, SearchFormat:=False, ReplaceFormat:=False
End With

On Error Goto 0 'Errors will be handled again
Application.ScreenUpdating = True

End Sub

但更好的解决方案是处理您的错误。
有关Error handling in VBA 的信息,请参阅this link

另外,您应该尽量避免使用Select,因为它会大大减慢您的宏。

【讨论】:

  • 感谢大家的回复。我用了错误这个词。从错误开始,我的意思是每次使用新数据集都会改变场景。大多数情况下,我的数据与数字结尾有关,以 1600D 之类的字母结尾代码。
猜你喜欢
  • 2018-12-16
  • 2020-12-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-09-01
  • 2017-02-05
  • 2022-01-01
相关资源
最近更新 更多