見出し画像

箸休め_7

久しぶりの投稿です。
今回は、Wordの差し込み印刷のイメージで、簡単な文章の編集に便利な機能を紹介しようと考えています。

今回の準備は、マクロを含む新しいBook「文字列操作.xlsm」を作って、シート名を「差込」としてください。
下図のような名簿を作って、適当に20名程度の氏名を入力してください。
ここでは「NHK首都圏局 アナウンサー・キャスター | NHK」から引用させていただきました。
日付と、時刻も適当に入力してください。
H列には定型文の例として「≪氏名≫」様のご予約日時は≪日付≫の≪時刻≫となっております。と記述しています。

シート「差込」

今回は、この定型文に埋め込んだ特定のキーワード≪氏名≫≪日付≫≪時刻≫をそれぞれ、リストの項目に適宜入れ替えようとするものです。

ある文字列を任意の文字列に置き替える構文は「Replace(A,B,C)」です。
変数Aの中にある、特定の文字列Bを任意の文字列Cに置き替えてください。
の意味です。

文字列操作に関するコードは、このほかにFormatStrConvなどもありますので、順を追って具体的に説明します。

まず、適当な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」を使用して、文字列検索についての説明を予定しています。

今回もご覧いただきありがとうございました。

この記事が気に入ったらサポートをしてみませんか?