• ベストアンサー

エクセル:結合したセルの高さ自動設定

nishi6の回答

  • ベストアンサー
  • nishi6
  • ベストアンサー率67% (869/1280)
回答No.1

皆さんから回答がありませんね。少し調べてみましたが、結合セルの自動調整はExcelの機能では難しいかもしれません。VBAでも結合セルに対してはAutoFitできないようです。私も「めんどくさいなァ」と思って使っていました。 できなければ作ればいいという事で、下記マクロを書いてみました。行・列の結合具合に関係なく矩形選択したセルの中に全部の入力値が表示できるよう行高を調整します。 やってることは、単一セルにしてしまい、最適な行高を調べ、それを選択した行の高さに配分し再度結合を行っています。列の結合を行っている場合は、フォントの具合が微妙で、1行分余分になってしまうことがあります。現時点では回避できていません。(たまに起きます) nmHgt = ActiveSheet.StandardHeight でシートに設定された標準の高さを使っていますが、直接数値を入れても(例えば13.5とか、そのシートの固有な高さ)いいです。 標準モジュールに貼り付けて、ツール→マクロ→マクロ→オプションでZとかのキーを割り当てると、調整したいセル範囲を選択し、Ctrl+Shift+Zキーでマクロが動きます。 参考になればと思い作って見ました。(行数を減らすためにかなりもがいています。マルチステートメントをばらしてインデントをつければ見やすくなると思います) Public cWd() As Single '選択範囲の各列の幅 Public Sub AutoFitEx() Dim nmHgt As Single '標準行高 nmHgt = ActiveSheet.StandardHeight '値をセットしてもいい Dim rg As Range '選択セル範囲 Dim intHgt, fitHgt As Single '初期の行高、調整した行高 Dim mgRCt, mgCCt As Single '結合された行数、列数 Dim rCt, cCt As Integer '行・列カウンタ Dim wkHgt, dsHgt As Single '必要な行高、計算上の行高 Application.ScreenUpdating = False Set rg = Selection '=== 結合解除 === mgRCt = rg.Rows.Count: mgCCt = rg.Columns.Count If mgRCt > 100 Then Exit Sub '余り多数の行・列を選択したら処理しない ReDim cWd(mgCCt) For cCt = 1 To mgCCt '各列の幅を読み込む cWd(cCt) = rg.Cells(1, cCt).ColumnWidth cWd(0) = cWd(0) + cWd(cCt) Next rg.Select: rg.HorizontalAlignment = xlLeft: rg.VerticalAlignment = xlTop rg.MergeCells = False '=== 1セルに収めて必要な高さを知る === rg.Cells(1, 1).Select: intHgt = nmHgt With Selection .ColumnWidth = cWd(0): .WrapText = True: .Rows.AutoFit: fitHgt = .Height End With '=== 必要な高さを各行に等分する === If fitHgt / intHgt > mgRCt Then For rCt = 1 To mgRCt wkHgt = fitHgt * 100 dsHgt = (Int(wkHgt / (75 * mgRCt)) - (wkHgt Mod (75 * mgRCt) <> 0)) * 0.75 rg.Cells(rCt, 1).RowHeight = dsHgt Next Else For rCt = 1 To mgRCt: rg.Cells(rCt, 1).RowHeight = nmHgt: Next End If '=== 列の幅を元に戻し結合する === For cCt = 1 To mgCCt: rg.Cells(1, cCt).ColumnWidth = cWd(cCt): Next rg.MergeCells = True '再度結合する Application.ScreenUpdating = True End Sub

um777
質問者

お礼

回答ありがとうございます。お礼が遅れまして申し訳ありません。 マクロは「新しいマクロの記録」でしか作ったことないので 上記のコードはほとんどわかりませんが、説明のとおりにしたところ やれました。 「回答がないなあ」とあきらめていたのでほんとうに助かりました。 ありがとうございました。

関連するQ&A

  • Excelでセルの書式設定が勝手に変わる

    Excel2000で、[セルの書式設定]-[配置]-[文字の配置]-[縦位置]を[中央揃え]にしてから、[方向]を縦書きにすると、[中央揃え]にしてあった[縦位置]の設定が、[上詰め]に変わってしまいます。  そこで気が付いて、また[中央揃え]にするか、[方向]を[縦書き]にしてから[縦位置]に設定すればよいことはわかりますが、こんなところで操作順序を縛らなくてもよいのではないでしょうか。 順序に左右されない普通の状態にする方法がありましたら教えてください。

  • エクセルで文書作成、セルの左右幅を自動設定

    エクセルで文章を作成しています。シートの左上隅をクリックしシート全体を選択して幅を2に設定。そのあとファイルからページ設定でA4 縦を設定しセルのA1より50文字ほど入力そのあと、書式からセルの書式設定 配置を選択しセルの結合、折り返して全体を表示するにチエックをして、A1の入力した50文字ほどを左右にセルを30個。行を2行選択しても50個の文字がぴったり収まりません。(行が少なかったり、多かったり)。入力時のフォントのポイントにもよりますが、たとえば12ポイントの文字を50文字入力した場合、セルの横幅、縦の行数を自動でできる方法はあるのでしようか。 現在は、感覚で手動で行い、なかなか1回ではうまくできず困っています

  • 印刷プレビュー見ると、異なります

    Excel2003でセルを結合しWordの文章(200字)位をコピー貼付けしました、セルの書式設定で配置 折り返して全体を表示する、を選択文字の配置 縦位置は上詰めです、綺麗に編集できて居るのに印刷プレビュー見ると、異なります、原因はなにですか

  • エクセル2000 セル結合時の書式設定を事前にカスタマイズできますか

    お世話になります。 エクセル2000を使用していますが、「セルの結合して中央揃え」のコマンドを使用した場合には、自動的に「セルの書式設定」の横位置が「中央揃え」で縦位置が「下詰め」になりますが、 これを自動的に横位置が「左詰め」で縦位置が「中央揃え」になるように設定する方法はありますか? よろしくお願いします。

  • エクセル95か97でセルを結合できない

    人のPCで一瞬しかさわってないのでエクセル95か97のどちらかわかりませんでした セルを結合しようとして、横に連続した3つのセルを選択して右クリック、セルの書式設定、配置と進みましたが、「セルを結合する」の部分が灰色になっていて結合できないようになっていました ツールバーの「セルを結合して中央に揃える」のボタンも同じく灰色で押せない状態になっていました どうしてそうなったのか分かりません 何か設定をしたのでしょうか

  • エクセル 自動セル結合

    エクセルについての質問です。 1つのセルにずっと文章を打ち込んでいき、そのセルをこえる長さの文章になったとき、その文全てが表示されるよう自動的にセルを結合していくようにするには、どのような設定をすればいいのですか? いちいち「結合して中央揃え」をしなければならず、困っています。 ご教授よろしくお願いします。

  • エクセルでセルの結合を解除するには

    Excel2003です。 セルの結合をする時は、ツールバーにあるセルの結合ボタンをクリックし結合し、解除する時も同じボタンをクリックすると元に返っていたのですが、それが出来なくなってしまいました。しかたなく「セルの書式設定」の「配置」で、セルの結合の所のチェックを外すことにより結合を解除しています。以前のようにボタンで解除できればとても助かるのですが、どこをどのよにすればボタンでの解除が出来るのでしょうか。過去のレスを読んでもボタンでトグル出来るようなことは書いてないですが、実際出来ていましたのでお聞きしています。どなたか教えてください。

  • EXCELのセル内の文字の折り返しがうまくいかない

    EXCEL2003でセル内で文字の折り返しを指定しているなか、 セルの書式設定で文字の折り返しを選んだのに文字が折り返して表示されません。 折り返しにはなっていますが、行の幅が自動で広がりません。 行の高さの指定も特に指定してないとこのことです(人に質問 されています)。 可能な行もあります。 なので何かが行に対して設定されているのだとは思うのですが 原因が思い浮かばないのです。 ただ、列幅をダブルクリックして自動調整を一度行っておけば、 そのあとはその行も折り返しがされ、行高さも自動調整します。 何かが行に設定されているようですが、 何が考えられるでしょうか? よろしくお願いします。

  • EXCELに文字をコピーすると、セルが自動的に2セル結合された状態になる

    IEのWINDOWから文字(とても短い単語、後ろのブランクなどもない状態)をEXCELのセルにコピーする際、「貼り付け」すると、なぜか、クリックしたセルだけでなく、その下のセルと2つのセルが結合されてしまい、ここに「貼り付け」されてしまいます。 貼り付ける前のセルは、「文字の制御」はすべてブランクです。 もし、原因や回避方法をご存じのかたがいらっしゃいましたらご指導下さい。 環境:WINDOWS98、IE5.50、EXCEL98

  • セル結合ができません。

    はじめまして。 セル結合を行おうと思ったら、セルの書式設定→配置→セルを結合するの選択ができませんでした。 何故なのか理由が分かりません。 どなたか教えて頂けないでしょうか。