ここから本文です

エクセル 列結合セルの行の高さの自動調整をVBAでしたいです。 A1セル~D1セルま...

hal********さん

2018/7/2614:27:04

エクセル 列結合セルの行の高さの自動調整をVBAでしたいです。
A1セル~D1セルまで列結合したセルに文章を流し込み、文章量に応じて行間隔を調整したいと考えています。

エクセルの機能で「書式」→「行の高さの自動調整」がありますがこの機能は結合セルには機能しないようなので困っております。
VBAで自動調整できる方法をご教授お願いいたします。

閲覧数:
185
回答数:
2
お礼:
50枚

違反報告

ベストアンサーに選ばれた回答

jiy********さん

2018/7/2617:11:43

1.A~D列の各列幅と合計列幅を取得
2.A1セル~D1セル結合を解除
3.A列の列幅を合計列幅に変更
4.1行目の行高さをオートフィット
5.A~D列の各列幅を1.で取得した初期値に戻す

上記のような手順になります。(セル結合を解除してA1セルで行高さを取得して戻す、ということです。)

シートモジュールに記載してください。

Sub sample()
    Dim echRng As Range, allRng As Range
    Dim colWdtSum As Double
    Dim colWdtArr() As Double
    
    Set allRng = Range("A1:D1")
    ReDim colWdtArr(1 To allRng.Count)
    If allRng.Rows.Count > 1 Then Exit Sub
    For Each echRng In allRng
        colWdtArr(echRng.Column) = echRng.ColumnWidth
        colWdtSum = colWdtSum + echRng.ColumnWidth
    Next echRng
    
    allRng.UnMerge
    allRng(1).EntireColumn.ColumnWidth = colWdtSum
    allRng(1).WrapText = True
    allRng(1).EntireRow.AutoFit
    allRng.Merge
    For Each echRng In allRng
        echRng.ColumnWidth = colWdtArr(echRng.Column)
    Next echRng
End Sub

1.A~D列の各列幅と合計列幅を取得
2.A1セル~D1セル結合を解除
3.A列の列幅を合計列幅に変更...

  • 質問者

    hal********さん

    2018/7/2716:38:40


    jiy********様
    連絡が遅れ申し訳ございません。
    このプロシージャを別の列でも使おうとしたのですが
    A列以外ではエラーが発生しました。
    別の列(例えばE1:H1)の範囲でこの処理ができるようにするにはどのようにすればよいでしょうか?
    記述のVBAが理解できないためですがお手数ですがお教えいただけいでしょうか?

  • その他の返信(2件)を表示

返信を取り消しますが
よろしいですか?

  • 取り消す
  • キャンセル

質問した人からのコメント

2018/7/27 18:14:23

ご丁寧に改良コードも教えていただきありがとうございました。
希望していた通りの結果が出せて大変たすかりました!!
ベストアンサーとさせていただきます。

ベストアンサー以外の回答

1〜1件/1件中

プロフィール画像

カテゴリマスター

aka********さん

2018/7/2615:43:58

行の高さの自動調整と 行間隔 は まったく 関係ありませんが?
また 結合されていても 行の高さの自動調整は 出来るはずですが?

逆に 行間という事は セル内で 文章を 複数行に分ける事に なりますが
セル内で 複数行の場合は 行の高さの自動調整は できません。

あわせて知りたい

みんなで作る知恵袋 悩みや疑問、なんでも気軽にきいちゃおう!

Q&Aをキーワードで検索:

Yahoo! JAPANは、回答に記載された内容の信ぴょう性、正確性を保証しておりません。
お客様自身の責任と判断で、ご利用ください。
本文はここまでです このページの先頭へ

「追加する」ボタンを押してください。

閉じる

※知恵コレクションに追加された質問は選択されたID/ニックネームのMy知恵袋で確認できます。

不適切な投稿でないことを報告しました。

閉じる