2017-12-01 18 views
1

数字91,92,93,94,99を91H、92H、93H、94H、99Hに置き換えます。 しかし、マクロをもう一度実行するたびに、マクロは数字に別のHを追加し、91H Hのように見えます。私はこれのための解決策を見つけることができません。私はマクロがその番号に別のHを追加したくないと思う。私は、マクロが新しい値にHを追加するだけで、既に変更されているものには追加しないことを望みます。Excel VBA - 値の置き換え

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コード全体を投稿しませんでした。

+1

どのようにこれらの数字はあるのために実行されます。それを行う方法は、このようなものですセル92,93,94または92を持つ単一セルと別のセル93. –

+2

おそらく 'xlPart'を' xlWhole'に変更しますか?あるいは、もしそれがテキストの一部であれば、 '' 92 "'を '' 92H ''に変更するかもしれませんか? – YowE3K

+0

1セルあたり1つの番号、xlWholeが仕事をしました!してください、私はそれを受け入れます:-)、ありがとう!時にはそれが簡単なこともあります。 – Bluesector

答えて

0

通常、多くのコードを繰り返しています。これは避けるべきです。

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の

0

私は回避策を考えています。 91H、92H、93H、94H、99Hを91,92,93,94,99と置き換えるマクロの前にコードを追加します。新しいマクロは次のようになります。
A. "91H": "H"を削除し、 H "、つまり何もしません。
B." 91 ":最初の部分には適合しません。" H "は2番目の部分に追加されます。

これはどのテキストでも有効です。

関連する問題