箸休め_7
久しぶりの投稿です。
今回は、Wordの差し込み印刷のイメージで、簡単な文章の編集に便利な機能を紹介しようと考えています。
今回の準備は、マクロを含む新しいBook「文字列操作.xlsm」を作って、シート名を「差込」としてください。
下図のような名簿を作って、適当に20名程度の氏名を入力してください。
ここでは「NHK首都圏局 アナウンサー・キャスター | NHK」から引用させていただきました。
日付と、時刻も適当に入力してください。
H列には定型文の例として「≪氏名≫」様のご予約日時は≪日付≫の≪時刻≫となっております。と記述しています。
今回は、この定型文に埋め込んだ特定のキーワード≪氏名≫≪日付≫≪時刻≫をそれぞれ、リストの項目に適宜入れ替えようとするものです。
ある文字列を任意の文字列に置き替える構文は「Replace(A,B,C)」です。
変数Aの中にある、特定の文字列Bを任意の文字列Cに置き替えてください。
の意味です。
文字列操作に関するコードは、このほかにFormatやStrConvなどもありますので、順を追って具体的に説明します。
まず、適当なProcedure名
例えば、Sub aaa()に
For n = 3 To 21
ST = Replace(Cells(2, "H"), "≪氏名≫", Cells(n, "B"))
ST = Replace(ST, "≪日付≫", Cells(n, "D"))
ST = Replace(ST, "≪時刻≫", Cells(n, "E"))
Cells(n, "H") = ST
Next n
End Sub
と入力して、実行してみてください。
とりあえず、日付は西暦で表示されますが、時刻は1より小さい小数で表示されると思います。
これではまずいので、時刻の行を
ST = Replace(ST, "≪時刻≫", Format(Cells(n, "E"), "h時m分"))
に置き換えてみてください。
今度は、うまくいくと思います。
また、日付も西暦でなく、和暦が良ければ
ST = Replace(ST, "≪日付≫", Format(Cells(n, "D"), "ggge年m月d日"))
としてみてください。
このように、Formatによって書式を変えることが可能です。
また、数字が半角で見にくいときには、StrConvによって全角にすることもできるし、ひらがなをカタカナに変えることも可能です。
全体のコーディング例
Sub RPC()
For n = 3 To 21
ST = Replace(Cells(2, "H"), "≪氏名≫", Cells(n, "B"))
ST = Replace(ST, "≪日付≫", Format(Cells(n, "D"), "ggge年m月d日"))
ST = Replace(ST, "≪時刻≫", Format(Cells(n, "E"), "h時m分"))
Cells(n, "H") = StrConv(ST, vbWide)
ST = StrConv(Cells(n, "C"), vbKatakana)
Cells(n, "I") = StrConv(ST, vbNarrow)
Next n
End Sub
実行ボタン「編集」と関連付けてご使用ください。
久々の投稿にしては短いものになりましたが、次回もこの「文字列操作.xlsm」を使用して、文字列検索についての説明を予定しています。
今回もご覧いただきありがとうございました。
この記事が気に入ったらサポートをしてみませんか?