また旅

日々のこと、画面の中でのこと (今はIDCFクラウド、KUSANAGI、WordPress、Vagrant及びCodeIgniter).

ソフトウェア

エクセルで書式設定はそのまま消さずに文字を置換する方法 VBA

エクセルでセルの文字列に例えば

といった複数の書式が設定されている場合に「検索と置換」の置換すると、全ての書式が消えてしまいました。何か設定があるのかと探しましたが見つけられません。誰か知ってたら教えてください……

 

そこで書式はそのまま、文字を置換する方法を調べてみました。今回、私の目的だったセルの文字列の一部を削除(空文字で置換)は下のコードでいけました。なお、確認したのは2016のみです。

Dim rng As Range
Dim pos As Integer
For Each rng In Selection
    pos = InStr(rng.Text, "あい")
    If pos > 0 Then
        rng.Characters(pos, 2).Delete '「あい」が見つかった位置から2文字削除
        'rng.Characters(2, 0).Insert ("かき") '1文字目の書式で「かき」が挿入され「あかきいうえお」
        'rng.Characters(2, 1).Insert ("かき") '2文字目の書式で「い」を「かき」が上書きし「あかきうえお」
        'rng.Characters(2, 2).Insert ("かき") '2文字目の書式で「いう」を「かき」が上書きし「あかきえお」
        'rng.Characters(1, 1).Text = "か" '「あ」を「か」で上書きし「かいうえお」
        'rng.Characters(1, 2).Text = "か" '「あい」を「か」で上書きし「かうえお」
    End If
Next

色々と手抜きですが、置換したいセル(範囲)を選択して実行したら、書式はそのままに「あい」が削除されます。(セルに複数「あい」がある場合は最初のだけ削除されます。)

コメントになってるとこは、試してみたメソッド、プロパティです。その他は下記のページをご覧ください。

Characters オブジェクト (Excel)

 

-ソフトウェア