Excel VBA – replace价值

我想用91H,92H,93H,94H,99H代替91,92,93,94,99号。 但是每次我再次运行这个macros时,这个macros都会给这个数字增加一个H,例如91HH。 我找不到解决scheme。 我不希望macros增加另一个H的数字。 我希望macros只给新值添加H,而不是已经改变的值。

Columns("D").Replace What:="92", _ Replacement:="92H", _ LookAt:=xlPart, _ SearchOrder:=xlByRows, _ MatchCase:=False, _ SearchFormat:=False, _ ReplaceFormat:=False Columns("D").Replace What:="93", _ Replacement:="93H", _ LookAt:=xlPart, _ SearchOrder:=xlByRows, _ MatchCase:=False, _ SearchFormat:=False, _ ReplaceFormat:=False Columns("D").Replace What:="91", _ Replacement:="91H", _ LookAt:=xlPart, _ SearchOrder:=xlByRows, _ MatchCase:=False, _ SearchFormat:=False, _ ReplaceFormat:=False Columns("D").Replace What:="94", _ Replacement:="94H", _ LookAt:=xlPart, _ SearchOrder:=xlByRows, _ MatchCase:=False, _ SearchFormat:=False, _ ReplaceFormat:=False Columns("D").Replace What:="99", _ Replacement:="99H", _ LookAt:=xlPart, _ SearchOrder:=xlByRows, _ MatchCase:=False, _ SearchFormat:=False, _ ReplaceFormat:=False 

我没有发布整个VBA代码,因为它有点长。

一般来说,你正在重复大量的代码。 这应该避免。 一个办法是这样的:

 Option Explicit Sub ReplaceSomething(columnName As String, lookFor As String, replaceWith As String) Dim rngCol As Range Dim rngCells As Range If WorksheetFunction.CountA(Columns(columnName)) = 0 Then Exit Sub Set rngCol = Columns(columnName).SpecialCells(2) If rngCol Is Nothing Then Exit Sub For Each rngCells In rngCol If rngCells = lookFor Then rngCells = replaceWith End If Next rngCells End Sub Sub TestMe() ReplaceSomething "A", "H", "H1" ReplaceSomething "B", "H", "H1" ReplaceSomething "D", "H", "H1" End Sub 

因此,您应该将列名称作为函数ReplaceSomething的参数,并且将为列A,B和C运行。

我想到一个解决方法。 在macros之前添加代码,用91,92,93,94,99代替91H,92H,93H,94H,99H。新macros将做什么是:
A.“91H”:删除“H”并加“H”,即什么都不做
B.“91”:不适合第一部分,第2部分加“H”

这应该适用于任何看到的文字。