Excelは表計算ソフトであって、文字入力や印刷のためのものではない……
ということで描画部分の作りが少しお粗末なExcelですが、文字入力や印刷など普通に使われているのが現実です。
そこで一番困るのが、セル内改行すると文字が見切れてしまう問題です。
上の画像のように中途半端に見切れているのを見るとどうにも「読みにくい!」んですよね。
そんなとき次善策としてセル内テキスト末尾に改行を入れるというお作法でしのいでいる人は多いでしょう。ぼくもその一人です。
しかしいちいち見た目を確認しながら改行を入れるのも面倒なんですよね……
そんな面倒を昔の自分がVBAで自動化していました。方法をご紹介します。
セル内テキストに改行を入れるのは面倒くさい
文字の見切れを防ぐためにセル内テキストに改行を入れるのは正直面倒です。
各セルについて手作業でやるなら、対象セルについてF2→Alt-Enterをやらなければなりません。
シート関数を使うにしても、隣の列に=A1&Char(10)
のような関数を入れてCtrl-dでオートフィルしたものを、値貼り付けで元のセルに戻し、関数を入れた列を消す……という手順が必要です。
いずれにせよ、面倒なんです。
VBAマクロでなにがどうなるか
そこで、VBAマクロです。
選択範囲のセルについて、テキスト末尾に改行が入っていない場合に改行を挿入します。
- 改行を自動挿入したいセル(範囲)を選択する
- VBAマクロを起動する
- 選択範囲内セルで末尾が改行でないセルに改行が挿入される
このようなふるまいをするVBAマクロがあれば、手作業はもちろん隣のセルを使ってあとで消す、という手間もいらなくなります。
VBAマクロのソースコード
VBAマクロのソースコードはこちらです。たった8行です。簡単ですね。
Sub 改行追加() Dim rng As Range For Each rng In Selection If Right(rng.Value, 1) <> Chr(10) Then rng.Value = rng.Value & Chr(10) End If Next rng End Sub
挿入する改行コードはLF(ラインフィード)にしています。
もしCR(キャリッジリターン)がお好みなら、Chr(10)
の部分をChr(13)
に置き換えてください。
なお、上記VBAコードを個人用のアドイン(*.xlam)に放り込んでおくと、ほかのファイルでも使いまわせて便利です。
リボンにボタンを追加するとクリック一発で呼び出せるようになります。
参考 Office でリボンをカスタマイズする – Office サポート
注意点
セル内の文字列を直接編集するマクロなので、もし気になるならテスト用のシートで事前に動作検証をお願いします。
またVBAマクロの実行はCtrl-zでUndoできませんのでご注意ください。
まとめ:面倒なお作法は自動化しよう
以上、Excelで選択範囲のセル内テキスト末尾に改行を自動入力するVBAマクロのご紹介でした。
なにかと「お作法」が多いExcelですが、手作業やシート関数でやるよりもVBAマクロで一発で済ませるほうが早いし確実です。
使い倒せばかなりの省力化につながるVBAマクロ、覚えてみるといろいろ楽しいと思いますよ。
https://work.naenote.net/entry/macros-for-excel-habits
コメント