文書中の金額表示をすべて赤色文字に変換するWordマクロを紹介しました。
「金額赤色変換マクロ」の記事は、
⇒ こちらをご覧ください。
先日の記事にも掲載していますが、マクロコードは次のとおりです。
Sub Kingaku()
Dim myR As Range
Set myR = ActiveDocument.Range(0, 0)
With myR.Find
.Text = "[0-9,]{1,}円"
.MatchWildcards = True
Do While .Execute
myR.Font.Color = vbRed
myR.Collapse wdCollapseEnd
Loop
End With
End Sub
このコードでも、何ら問題はありません。
ただ、このコードを改めて眺めていたら、少しですが、簡略化できることに気づきました。
「Do While ~Loop」の箇所です。
このDo構文は、条件が真の間、ループ内の処理を繰り返します。VBAの基本構文です。
文書先頭から一つづつ検索して、検索される都度、複雑な処理を実行するならば、この構文で対処します。
ですが、検索箇所のすべてに同一の置換処理をするだけであれば、「Do While ~Loop」構文までは不要です。単純置換ならば、コード1行で済みます。
FindのExecuteメソッドの名前付き引数「Replace」に、wdReplaceAllを設定するのです。
.Execute Replace:=wdReplaceAll
と、これだけでOKです。この1行だけで、検索された箇所のすべてが、一括置換されます。
こちらの書き方の方が、一般的と思われます。
念のため、その方式で書き換えたコードの全文を掲載しておきます。
Sub Kingaku()
Dim myR As Range
Set myR = ActiveDocument.Range(0, 0)
With myR.Find
.Text = "[0-9,]{1,}円"
.MatchWildcards = True
.Replacement.Font.Color = vbRed
.Execute Replace:=wdReplaceAll
End With
End Sub
Wordマクロによる置換処理に関しては、もう少し、記事にして紹介したいことがあります。
よって、この続編を構想中です。
それでは、また次の記事で
■■■■ goosyun ■■■■
最近の「VBAプログラミング・マクロ」カテゴリーもっと見る
最近の記事
カテゴリー
バックナンバー
人気記事