• ベストアンサー

エクセルVBA 行の高さ自動設定

エクセル2002のVBA時、行の高さを自動設定することに関して、ご教授願います。  行の高さは Autofit を使用する事となっているのですが、Autofitでは文字の大きさから高さを自動設定するようですが、私は入力されている行数で自動設定をしたいと思っています。  1個のセルに200文字くらい入力された場合、列幅を30ポイント(マージして)行の高さを自動的に取得する方法ではフォントサイズの10ポイントで設定しています。 どうすればよいのでしょうか?良い方法を教えてください。

質問者が選んだベストアンサー

  • ベストアンサー
noname#144013
noname#144013
回答No.2

こんにちは。 以下、的外れだった場合はすみません。 質問者さんが行いたい事は、   『結合されたセルに対して、行の高さの自動調整(Autofit)を行いたい。』 という事でしょうか? その場合ですが、残念ながら、結合されたセルに対して、マクロのAutofitを 実行しても、機能しない(自動調整されない)ようです。 ※当方は、Excel2000で試してみました。 ですが、工夫すれば自動調整を行うことは可能です。 以下のマクロ(サンプル)は、その一例です。 ■マクロの概要  ワークシートのB3とB4のセル(複数行のテキストが格納されている)に対して、  以下の操作を行います。 1)フォント設定: MS Pゴシック、サイズ8 2)配置設定  : 横位置 =標準            縦位置 =上詰め            自動折り返し(=あり) 3)B3:C3をセル結合、B4:C4をセル結合 4)B列、C列の列幅を、15に設定   ・幅の単位は、標準フォントの文字幅基準   ・B列、C列の合計列幅は、30 (=15×2) 5)3行目、4行目の行の高さを自動調整 6)B3:C4のセル範囲に罫線を設定 ■結合セルに対する[行の高さ]の自動調整(Autofit)の方法 1)一旦、セル結合を解除する。 2)結合解除したセル(単一列)の列幅を、希望する列幅に設定する。 3)結合解除したセル(行単位)に、Autofitを行う。 4)3)のセル(行単位)の[行の高さ]を取得して保存しておく。 5)再び、セルの結合を行う。 6)結合セル(列単位)の列幅を、2)で設定した列幅の「列数で割った値」に  設定する。  ※結合セルの合計列幅を、2)の設定列幅と同じにする。 7)結合セル(行単位)の[行の高さ]を、4)で保存しておいた高さに設定する。 ■マクロ(サンプル) 注1)このマクロは、「標準モジュール」に実装するマクロです。 注2)インデント等のため、全角スペースを入れています。 /////↓ここから/////////////////////////////////// '** 結合セルの[行の高さ]の自動調整 ** Sub MyAutoFit()   Dim nCW As Long  '列幅(結合後の列幅)   Dim nRH1 As Long '行の高さ1(3行目用)   Dim nRH2 As Long '行の高さ2(4行目用)   '結合セル(2列分)の列幅の値を設定   '※幅の単位は、[標準スタイル]の1文字分   ' の幅に相当する   nCW = 30   '操作対象のワークシートを指定   With Worksheets("Sheet2")     'B3:C3、B4:C4のセル結合を一旦解除     .Range("B3:C3").MergeCells = False     .Range("B4:C4").MergeCells = False     'B3:B4のフォント設定     With .Range("B3:B4").Font       .Name = "MS Pゴシック"       .FontStyle = "標準"       .Size = 8       .Strikethrough = False       .Superscript = False       .Subscript = False       .OutlineFont = False       .Shadow = False       .Underline = xlUnderlineStyleNone       .ColorIndex = xlAutomatic     End With     'B3:B4の配置を設定     With .Range("B3:B4")       .HorizontalAlignment = xlGeneral '横位置(=標準)       .VerticalAlignment = xlVAlignTop '縦位置(=上詰め)       .WrapText = True    '自動折り返し(=あり)       .Orientation = 0    '傾き(=0度)       .AddIndent = False   'インデント(=なし)       .ShrinkToFit = False  '縮小表示(=なし)       .MergeCells = False  'セル結合(=なし)     End With     'B列の列幅を設定     '※B列~C列の結合後の列幅と同じ幅で設定     .Columns("B:B").ColumnWidth = nCW     '3行目~4行目の行の高さを自動調整     .Rows("3:4").EntireRow.AutoFit     '3行目~4行目の行の高さを取得して保存     nRH1 = .Rows("3:3").RowHeight     nRH2 = .Rows("4:4").RowHeight     'B3:C3、B4:C4のセルを再度結合     .Range("B3:C3").MergeCells = True     .Range("B4:C4").MergeCells = True     'B列~C列の列幅を設定     '※結合セルが2列のため、その列幅の1/2幅を設定     .Columns("B:C").ColumnWidth = nCW / 2     '3行目~4行目の行の高さを設定     '※保存しておいた行の高さをここで設定     .Rows("3:3").RowHeight = nRH1     .Rows("4:4").RowHeight = nRH2     'B3:C4のセル範囲の罫線を設定     With Worksheets("Sheet2").Range("B3:C4")       '対角線の設定(=なし)       .Borders(xlDiagonalDown).LineStyle = xlNone       .Borders(xlDiagonalUp).LineStyle = xlNone       '左端の枠線の設定(=中線の実線)       With .Borders(xlEdgeLeft)         .LineStyle = xlContinuous         .Weight = xlMedium         .ColorIndex = xlAutomatic       End With       '上端の枠線の設定(=中線の実線)       With .Borders(xlEdgeTop)         .LineStyle = xlContinuous         .Weight = xlMedium         .ColorIndex = xlAutomatic       End With       '下端の枠線の設定(=中線の実線)       With .Borders(xlEdgeBottom)         .LineStyle = xlContinuous         .Weight = xlMedium         .ColorIndex = xlAutomatic       End With       '右端の枠線の設定(=中線の実線)       With .Borders(xlEdgeRight)         .LineStyle = xlContinuous         .Weight = xlMedium         .ColorIndex = xlAutomatic       End With       '内側の垂直方向の罫線の設定(=なし)       .Borders(xlInsideVertical).LineStyle = xlNone       '内側の水平方向の罫線の設定(=細線の実線)       With .Borders(xlInsideHorizontal)         .LineStyle = xlContinuous         .Weight = xlThin         .ColorIndex = xlAutomatic       End With     End With   End With End Sub /////↑ここまで/////////////////////////////////// 添付画像は、上記マクロを実行したExcelシートのキャプチャ画像です。 ※貼れていない、または、見辛かった場合はすみません。 以上です。参考になれば幸いです。

yoinakasan
質問者

お礼

回答していただきありがとうございました。 御礼が遅くなりすみません。 いろいろと試行錯誤をしていたら、このような時期となりました。おかげさまで、印刷画面が使いやすいものとなり、感謝しています。 時々、業務を使いやすいものとするため、エクセルを工夫しているのですが、出力では思うようにならず本などを読みながら作成するのですが、指導していただけるので、助かります。 今後ともよろしくお願いいたします。

その他の回答 (1)

  • wkbqp833
  • ベストアンサー率36% (319/886)
回答No.1

印刷のときのことを考えての話ではありませんか? 残念ながらできません。マイクロソフトはあくまでも、Excelは表計算ソフトであり、文章はWordで作ってくれというスタンスです

関連するQ&A

専門家に質問してみよう