元の文字列を残し訂正線を引いたうえで、訂正後の文字を改行して追加したい ①
先日、こんな依頼を受けた。
「リストで商品名の訂正を行う際、元の文字列を残し訂正線を引いたうえで、訂正後の文字を改行して追加したい」
例えば、↓ こんな感じだ。
今までは手作業でやっていて、手間がかかって仕方がない。何とか簡単にならないかという相談だった。そこで今回は、上記の作業支援マクロに挑戦する。
取り敢えず、引数として以下の三つを準備する。
- 文字列が書かれたセル
- 変更前の文字
- 変更後の文字
作戦としては、こんな感じだ。
- 変更前と変更後の文字列を改行で結合する。
- 変更前の文字列分だけ、訂正線を引く。
「変更前の文字列分だけ」については、Charactersを用いて指定する。また、訂正線の有無は、FontのメンバーであるStrikethroughを用いる。
Sub CorrectCharacter(target_range As Range, _ source_chara As String, _ corrected_chara As String) ' 文字列の結合 target_range = source_chara & vbNewLine & corrected_chara ' 先頭から訂正前までの文字列分、訂正線を追加する。 target_range.Characters(Start:=1, Length:=Len(source_chara)). _ Font.Strikethrough = True End Sub
テストしてみよう。
Sub test() CorrectCharacter Selection, "りんご", "林檎" End Sub
結果は上々。だけど本当は、このような編集方法はあまり推奨できない。なぜならこれは、手書きの見た目をExcel上で再現するためのものであって、データの流用性を著しく損ねる方法だから。
出来れば今後は、このような方式に改めて欲しいところです。
参考まで。