【Excel VBA 再利用コード集】結合セルの行高を自動調整

アフィリエイト広告を利用しています。

結合セルを含む範囲の行高を、セル内の改行数に基づいて自動調整する VBA コードです。

コピー利用、または AI による再生成・参考用途を想定しています。

結合セルの行高を自動調整するコード

コード

Option Explicit


Sub SetRowHeight_ByLineBreaks()

    ' Description
    '   選択範囲内のセルを走査し、
    '   セル内の改行数に応じて行高を自動調整する。
    '   ※ActiveWindow.Selection を使用するため、別ブックでも動作する。
    
    ' 変数宣言
    Dim target_rng         As Range   ' 行高調整対象の選択範囲
    Dim cell_rng           As Range   ' セル走査用

    Dim base_row_height    As Double  ' 標準行高
    Dim line_row_height    As Double  ' 改行1行分の行高

    Dim cell_text          As String  ' セル内容
    Dim line_count         As Long    ' セル内行数
    Dim max_line_count     As Long    ' 最大行数
    Dim target_row_height  As Double  ' 設定行高
    

    ' ActiveWindow の Selection を行高調整対象として取得(別ブック対応)
    If ActiveWindow Is Nothing Then Exit Sub
    If TypeName(ActiveWindow.Selection) <> "Range" Then Exit Sub
    Set target_rng = ActiveWindow.Selection

    ' 行高の基準値を取得
    base_row_height = target_rng.Worksheet.StandardHeight
    line_row_height = base_row_height

    ' 最大行数を初期化
    max_line_count = 1

    ' 複数セル選択も想定し、選択範囲内セルを走査して最大行数を取得
    For Each cell_rng In target_rng.Cells

        ' 結合セルは左上セルのみ評価
        If cell_rng.MergeCells Then
            If cell_rng.Address <> cell_rng.MergeArea.Cells(1, 1).Address Then
                GoTo ContinueCell
            End If
        End If

        ' セル内容を取得(表示形式の影響を避けるため value"2" を使用)
        cell_text = CStr(cell_rng.Value2)

        ' 行数をカウント(行数 = 改行数 + 1)
        If Len(cell_text) > 0 Then
            line_count = UBound(Split(cell_text, vbLf)) + 1
            If line_count > max_line_count Then max_line_count = line_count
        End If

ContinueCell:
    Next cell_rng

    ' 行高を算出して設定
    target_row_height = base_row_height _
                      + (max_line_count - 1) * line_row_height

    target_rng.EntireRow.RowHeight = target_row_height

End Sub

シート作成およびショートカットの登録

シート作成

下図のような使いかたシートを作成しておくとよい。

使い方の把握および覚え書きとして利用できる。

使い方シートの画像
使いかたシート

ショートカットの登録

以下のように実行用のショートカットを登録しておく。

通常のマクロと違い、ThisWorkbook に実行ボタンを作成してクリックする方法では、うまくいかない。

ボタンをクリックすると ThisWorkbook 側にフォーカスが移動し、別ブックで処理対象として選択されていた範囲が非アクティブになるため。

使いかた

対象範囲を選択
「Ctrl + Shift + H」を押す

実行結果↓

実行結果(再掲)

コード実行結果まとめ

通常通り行の境界をダブルクリックして行高を調整するとこうなる。

実行前画像
実行前
実行後画像
実行後

本コードで行高を調整するとこうなる。

実行前画像
実行前
実行後画像
実行後

VBAスキルアップの参考情報

近年は、ChatGPTをはじめとするAIの登場によって、学習のスタイルが大きく変わりました。

分からないことがあれば、AIに尋ねれば答えがすぐに見つかる時代です。

とはいえ、AIを使いこなすには、自分自身の基本的な知識や理解力が欠かせません。

全体像をつかむためには、やはり書籍などで体系的に学んでおくことが今でも有効です。

そのうえでAIを活用すれば、自分の理解度に合わせた的確な解説や、応用のヒントを得ることができます。

「学んで基礎を築く → AIで補い発展させる」──このサイクルを重ねることで、VBAスキルは着実に高まっていくでしょう。

VBAのスキルアップ

VBAを学び始めるなら

入門書は、どれを選んでも大きな差はないように感じます。

どれを選ぶかに悩むことに時間をかけるよりも、まずは手頃な一冊を手に取って進めてみるのがおすすめです。

もし迷ったときには、私はインプレス社の「いちばんやさしい」シリーズを選ぶことが多いです。

基礎を超えて力をつけたいなら

私は上級者を目指していましたので、入門書にとどまらず、このような内容の濃い一冊を選んで学んでいました。

今は誰でもAIを活用できる時代になりましたが、上級者を目指す方にとっては、AIをより上手に活用するという意味でも、こうした本は今なお価値があります。

このレベルの本を一冊持っておくことに、損はないでしょう。


資格で能力を証明したいなら

VBAのプログラミング能力を客観的に示したい場合には「VBAエキスパート試験」があります。

特に「スタンダード」の方は上級者向けです。

あなたが社内業務の改善を行う立場であっても、VBAで作成したシステムをお客様に納める立場であっても、この資格は信頼や安心につながるでしょう。

以下の公式テキストが販売されています。



プログラミングの一般教養

「独学プログラマー」というプログラミングの魅力を解説した書籍があります。

これはVBAではなくPythonを題材としていますが、プログラミングの基本的な知識や思考法、仕事の進め方まで幅広く学べます。

今はAIにコードを尋ねれば、答えが返ってくる時代です。

しかし、この本からは「コード」以上に、プログラミングに向き合う姿勢や考え方を学ぶことができるでしょう。


こちらの記事でも紹介しています。もしよろしければご覧ください。

【初心者歓迎】無料相談受付中 

運営者・ポテ

いつもありがとうございます!

限られた時間をより良く使い、日本の生産性を高めたい──

みんなの実用学を運営するソフトデザイン工房では、業務整理や業務改善アプリケーション作成のご相談を承っております。

お気軽にご相談ください。


こちらの記事でも紹介しております。

おわりに

運営者・ポテ

ご覧いただきありがとうございました!

この記事では、「結合されたセルの行高を自動調整する」方法をまとめました。

お問い合わせやご要望がございましたら、「お問い合わせ/ご要望」フォームまたはコメント欄よりお知らせください。

この記事が皆様のお役に立てれば幸いです。

なお、当サイトでは様々な情報を発信しております。よろしければトップページもあわせてご覧ください。

この記事を書いた人

運営者・ポテソフトデザイン工房|日々の業務にちょうどいい自動化を
■人生を追求する凡人 ■日本一安全で、気の向くままに自分の時間を過ごせる、こだわりのキャンプ場を作るのが夢 ■ソフトデザイン工房運営(個人事業者) - 業務改善アプリケーションをご提供 ■人生は時間そのもの。ひとりでも多くの人が「より良い人生にするために時間を使って欲しい」と願い、仕事のスキルの向上、余暇の充実、資産形成にチャレンジ。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です