以下のマクロはそういう不便な結合セルの高さを自動設定するものです。複数の結合セルを選択して実行することも可能です。一般的には横に結合したセルが多いため、主に横結合したセルを対象としたマクロですが、縦に結合したセルでも利用できます。結合していない普通のセルの高さも自動設定します。処理の概要は以下の流れになります。結合セルの列幅を記憶する。セルの結合を解除する。解除後のセルの列幅を、結合時の列幅に変更する。通常セルの状態になっているため、自動設定して行の高さを適切なサイズに設定する。自動設定された行の高さを記憶する。再度セル結合を行い、記憶していた行の高さを再度設定する。印刷対応は通常のExcelと同様で、大体の場合は出来てますExcelでは画面ではちゃんと全部の文字が表示されていたのに印刷時に切れてしまうバグがあります。この自動調整マクロを実行した場合はどうなるかというと、印刷したらちゃんと全部の文字が表示されるのかが心配になりますが、大体表示されます。大体、というのはExcelの仕様通り、という意味で、もしちゃんと印刷されない場合はマクロの使用するしないに関わらず、それ以前に結合セルでない普通のセルでもちゃんと印刷されません。これはExcelのバグもそのままこのマクロに取り込まれているためで、そこはご了承ください。同じ行に別の結合セルがあった場合このマクロには認識はしているのですが入れていない処理があります。それは、同じ行に結合セルが他にもあった場合、そちらの行の高さを無視して設定してしまう点です。実は、このマクロを思いついたときは同じ行の他の結合セルのチェック処理は入れるつもりでした。実際に使ってみると、チェック処理がなくても全く不便なことがなく、自分で使う分には「他に結合セルがあるか目で見れば分かるからいいや」と思い、チェック処理を入れませんでした。知人にも使ってもらい、チェック処理について聞いてみましたが、「いや、いらんくね?十分じゃね?」とのことでした。同じ行の他の結合セルのチェック処理を入れてもいいのですが、多くの場合はそのチェック処理は無用の処理になるため処理時間が掛かることの欠点の方が多いと感じたのもあります。普通に使う分には問題ないと思います。実際私も問題なく利用できています。まれに他の列に結合セルがある場合があるのですが、すぐに気が付きます。他の列に結合セルがあった場合は、そちらでもこのマクロを実行すればすぐにどちらの高さを選択すればいいのかが分かります。ソースコード以下がコードになります。関数が5つありますが、1つ目の関数が実行する関数になります。残り4つは内部で呼び出される関数です。セル配列内に現ループのセルがあれば処理対象。なければ次のSelection処理なので後続処理で配列取り直し。セル配列内に現ループのセルがあれば処理対象。なければ次のSelection処理なので後続処理で配列取り直し。縦に結合したセルに文字を入力します。以下の例では文字数がセル幅より長いのですが、高さの自動調整が行われず文字が途中で切れています。文字を入力後、結合セルを選択して上記マクロ「結合セルの行高さ自動設定()」を実行します。実行後、高さが自動的に調整されます。選択している複数行のうち、先頭行の高さが調整されます。残りの行の高さは変わりません。横に結合したセルに文字を入力します。縦の場合と同様、文字が途中で切れています。上記「結合セルの行高さ自動設定()」を実行後、高さが自動調整されます。Excel作業をVBAで効率化シェアお問合わせTOPへ。