捗るを極めたいコンサルタントの仕事術ブログ

NAEの仕事効率化ノート

作業効率

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マクロ、覚えてみるといろいろ楽しいと思いますよ。

自称Excelのプロに教わった面倒な「お作法」をマクロで自動化しまくった結果


仕事術の本を書きました

「仕事の速さを3倍にしろ」
部長からの突然の無茶振りを、若手社員の「泉くん」はどう切り抜けるのか?
こんな無理難題をクリアするための、43の仕事術



外資系コンサルは「無理難題」をこう解決します。 「最高の生産性」を生み出す仕事術

>>内容紹介記事はこちら



  • この記事を書いた人

NAE

IT戦略とデジタルマーケティングを主に扱う外資コンサル。「こうしたほうが早くない?」が口癖の効率化マニア。目指す人物像は三国志の左慈仙人。詳しいプロフィールはこちら

-作業効率

Copyright© NAEの仕事効率化ノート , 2017 All Rights Reserved.