【Excel VBA】セルのテキストが隣の列にはみ出さないようにする

Excel のセルにちょっと長めのテキストを入力すると、下図のように、隣の列の上にテキストがはみ出してしまいます(隣のセルが空の場合)。

これはこれで便利だと思うときもあるけれど、はみ出てほしくないケースもありますよね。

場合によっては、下図のようになって欲しいんだけど・・・Excel にはそうするためのオプションがありません(なんで? 付けて欲しいですよね!)。

ネット検索してみると、上図のようにするための方法がいくつかヒットするけど、私が見つけた方法はどれも手作業を前提としたものでした。

対象セルが少ない場合は手作業でも良いけれど、対象セルが多くなると大変・・・。

というわけで、簡単なマクロを2つ作りました。

マクロ1

最初のマクロは、選択中のセルに対して、下記の処理を自動的に行います。

  1. 対象セルの高さを覚える
  2. 対象セルの[折り返して全体を表示する]オプションをオンにする
  3. 対象セルの高さを、覚えておいた値に戻す

長いテキストが入力されているセルを選択してマクロを実行してください。もちろん複数のセルを選択しておくことができますが、(列全体を選択するなど)選択したセルの数が多くなると処理時間もかかるので注意してください。

'長いテキストのセルを選択して実行
Sub Hamidashi_1()

Dim oRange As Range
Set oRange = Selection

Dim oCell As Range
For Each oCell In oRange.Cells
    If oCell.Value <> "" Then
        Dim rowHeight As Variant
        rowHeight = oCell.rowHeight
        oCell.WrapText = True
        oCell.rowHeight = rowHeight
    End If
Next

End Sub

マクロ2

このマクロは、選択中のセルが空の場合、そのセルに半角スペースを入力します。

長いテキストが入力されているセルの隣のセルを選択してマクロを実行してください。もちろん複数のセルを選択しておくことができますが、(列全体を選択するなど)選択したセルの数が多くなると処理時間もかかるので注意してください。

'長いテキストのセルの右のセルを選択して実行
Sub Hamidashi_2()

Dim oRange As Range
Set oRange = Selection

Dim oCell As Range
For Each oCell In oRange.Cells
    If oCell.Value = "" Then
        oCell.Value = " "
    End If
Next

End Sub

 

処理速度はマクロ1よりもマクロ2のほうが速いです。

マクロを使わず未使用範囲に一気に半角スペースを入力する方法

前述の「マクロ2」の手動バージョンです。

未使用範囲限定で行えるやり方です(マクロのように使用中のセルと未使用のセルを自動判定することはできません)。

  1. まず、シートの未使用範囲を選択します(あまり広い範囲を選択すると処理時間がかかるので注意してください)。
  2. 選択後、半角スペースを入力します(まだ Enter は押さない)。
  3. 半角スペース入力後に Ctrl + Enter を押すと、選択範囲のすべてのセルに半角スペースが入力されます。

半角スペースに限らず、選択範囲に同じ値を一気に入力するときに使える技ですね。

購読する
通知を受け取る対象
guest
0 Comments
Inline Feedbacks
View all comments