【VBA】選択セルの改行数に合わせて、数式バーの高さを自動調整する方法

目次

はじめに

Excelのセル内で改行(Alt + Enter)を使って長い数式や文章を入力すると、数式バーには最初の1行しか表示されず、全体を確認するために毎回手動でバーの高さを広げなければならず、不便ですよね。

VBAのシートイベントを使えば、「セルを選択した瞬間に、そのセルの内容が全て表示されるように、数式バーの高さを自動で調整する」という、非常に便利な機能を実装できます。

この記事では、ユーザーがセルを選択するたびに、そのセルの改行数を数えて、数式バーの高さを最適化するマクロの作り方を解説します。


数式バーの高さを自動調整するVBAサンプルコード

このコードは、シートモジュールに記述します。特定のワークシート(例: Sheet1)のタブを右クリックし、「コードの表示」を選択して表示されるコードウィンドウに貼り付けてください。標準モジュールではない点に注意してください。

シートモジュールの完成コード

' シート上で選択範囲が変更されたときに実行されるイベント
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    
    ' 複数のセルが選択された場合は、先頭のセルを対象とする
    Dim activePrimaryCell As Range
    Set activePrimaryCell = Target.Cells(1, 1)
    
    '--- 選択セルの内容に含まれる改行(vbLf)の数を数える ---
    Dim lineCount As Long
    ' Split関数で、vbLf(改行コード)を区切り文字として文字列を配列に分割
    ' UBoundでその配列の最大インデックスを取得すれば、改行の数がわかる
    lineCount = UBound(Split(activePrimaryCell.Formula, vbLf)) + 1
    
    '--- 数式バーの高さ(行数)を設定 ---
    ' Application.FormulaBarHeightプロパティで高さを変更
    Application.FormulaBarHeight = lineCount
    
End Sub

コードの解説

Private Sub Worksheet_SelectionChange(ByVal Target As Range)

これは特別な名前のイベントプロシージャで、このコードが書かれているワークシート上で、ユーザーがセルを選択し直すたびに自動的に実行されます。

  • Target As Range: 新しく選択されたセル(範囲)そのものを表します。

lineCount = UBound(Split(activePrimaryCell.Formula, vbLf)) + 1

この一行が、セル内の行数を数える核心部分です。

  1. activePrimaryCell.Formula: 選択されたセルの内容を、数式も含めて文字列として取得します。
  2. Split(..., vbLf): Split関数を使い、文字列を vbLf(VBAにおける改行コード)を区切り文字として、配列に分割します。例えば、3行のテキストは、2つの改行で区切られているため、3つの要素を持つ配列になります。
  3. UBound(...): 分割してできた配列の、最大のインデックス番号を取得します。3つの要素を持つ配列(インデックス 0, 1, 2)の場合、UBound2 を返します。
  4. + 1: インデックス番号は0から始まるため、実際の行数は UBound の結果に 1 を足した値になります。

Application.FormulaBarHeight = lineCount

Application.FormulaBarHeight プロパティは、数式バーの表示行数を設定するためのものです。このプロパティに、先ほど計算した lineCount を代入することで、数式バーの高さが選択セルの行数と一致するように調整されます。


まとめ

今回は、Worksheet_SelectionChange イベントを利用して、選択したセルの内容に応じて数式バーの高さをリアルタイムに自動調整する方法を解説しました。

  • Worksheet_SelectionChange イベントで、セル選択の操作を検知する。
  • Split 関数と vbLf を使って、セル内の改行数を数える。
  • Application.FormulaBarHeight プロパティに、計算した行数を設定する。

このマクロを一度設定しておくだけで、複数行にわたる長い数式や文章の視認性が劇的に向上し、日々のExcel作業がより快適になります。ぜひ、ご自身のよく使うシートに実装してみてください。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

私が勉強したこと、実践したこと、してることを書いているブログです。
主に資産運用について書いていたのですが、
最近はプログラミングに興味があるので、今はそればっかりです。

目次