著書「外資系コンサルは無理難題をこう解決します」発売中
PR

Excelで選択範囲のセル内テキスト末尾に改行を自動入力するVBAマクロ

見切れているExcelのセル内文字列 作業効率

Excelは表計算ソフトであって、文字入力や印刷のためのものではない……

ということで描画部分の作りが少しお粗末なExcelですが、文字入力や印刷など普通に使われているのが現実です。

そこで一番困るのが、セル内改行すると文字が見切れてしまう問題です。

上の画像のように中途半端に見切れているのを見るとどうにも「読みにくい!」んですよね。

そんなとき次善策としてセル内テキスト末尾に改行を入れるというお作法でしのいでいる人は多いでしょう。ぼくもその一人です。

しかしいちいち見た目を確認しながら改行を入れるのも面倒なんですよね……

そんな面倒を昔の自分がVBAで自動化していました。方法をご紹介します。

スポンサーリンク

セル内テキストに改行を入れるのは面倒くさい

文字の見切れを防ぐためにセル内テキストに改行を入れるのは正直面倒です。

各セルについて手作業でやるなら、対象セルについてF2Alt-Enterをやらなければなりません。

シート関数を使うにしても、隣の列に=A1&Char(10)のような関数を入れてCtrl-dでオートフィルしたものを、値貼り付けで元のセルに戻し、関数を入れた列を消す……という手順が必要です。

いずれにせよ、面倒なんです。

VBAマクロでなにがどうなるか

改行が自動入力されたExcel

そこで、VBAマクロです。

選択範囲のセルについて、テキスト末尾に改行が入っていない場合に改行を挿入します。

  1. 改行を自動挿入したいセル(範囲)を選択する
  2. VBAマクロを起動する
  3. 選択範囲内セルで末尾が改行でないセルに改行が挿入される

このようなふるまいをする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)に放り込んでおくと、ほかのファイルでも使いまわせて便利です。

参考 アドインを追加または削除する – Excel

リボンにボタンを追加するとクリック一発で呼び出せるようになります。

参考 Office でリボンをカスタマイズする – Office サポート

注意点

セル内の文字列を直接編集するマクロなので、もし気になるならテスト用のシートで事前に動作検証をお願いします。

またVBAマクロの実行はCtrl-zでUndoできませんのでご注意ください。

まとめ:面倒なお作法は自動化しよう

以上、Excelで選択範囲のセル内テキスト末尾に改行を自動入力するVBAマクロのご紹介でした。

なにかと「お作法」が多いExcelですが、手作業やシート関数でやるよりもVBAマクロで一発で済ませるほうが早いし確実です。

使い倒せばかなりの省力化につながるVBAマクロ、覚えてみるといろいろ楽しいと思いますよ。

https://work.naenote.net/entry/macros-for-excel-habits

コメント

コメント以外のご意見・ご要望、管理人へのご連絡などは、お問い合わせからどうぞ

タイトルとURLをコピーしました