Excelで列幅に合わせて縮小表示する設定
セルの文字列をセルの列幅に合わせて表示したい場合、「縮小して全体を表示する」機能を利用します。
列幅が狭いセルだとフォントサイズが小さくなり、ただの点線にしか見えないぐらいまで縮小されます。
Excelの操作では、セル右クリック→セルの書式設定→配置タブ で、「縮小して全体を表示する」のチェックを付けることで縮小表示が可能になります。
VBAでも同様の設定を行うことが出来ます。
セルの書式設定とプロパティの関係が以下の図になります。
ここでは図の黄色部分の「縮小して全体を表示する」を設定するShrinkToFitプロパティについて説明します。横位置にも黄色を設定している理由は後述します。
構文
1 |
Rangeオブジェクト.ShrinkToFit |
Rangeオブジェクトにはセル範囲を指定します。
ShrinkToFitプロパティは取得と設定を行うことが出来ます。
Trueの場合は縮小表示を行い、Falseの場合は縮小表示を解除します。
注意点として、横位置で「繰り返し(xlFillプロパティ)」、「両端揃え(xlJustifyプロパティ)」、「均等割り付け(xlDistributed)」が設定されている場合は、縮小表示で表示できません。
ShrinkToFitプロパティ自体への設定は可能ですが、Trueになっていても横位置の設定が上記の3つのいずれかの場合は縮小表示されません。
サンプルコード
以下はC列(縮小表示あり)とD列(縮小表示なし)で文字の配列の横位置の設定ごとに縮小表示のありとなしの場合の表示状態を表すサンプルです。各セルには同じ文字列を設定しています。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 |
Sub ShrinkToFitTest() Dim iRow Dim iCol Dim r As Range '// 設定 '// 横位置 Range("C3:D3").HorizontalAlignment = xlGeneral Range("C4:D4").HorizontalAlignment = xlLeft Range("C5:D5").HorizontalAlignment = xlCenter Range("C6:D6").HorizontalAlignment = xlRight Range("C7:D7").HorizontalAlignment = xlFill Range("C8:D8").HorizontalAlignment = xlJustify Range("C9:D9").HorizontalAlignment = xlCenterAcrossSelection Range("C10:D10").HorizontalAlignment = xlDistributed '// 縮小表示 Range("C3:C10").ShrinkToFit = True Range("D3:D10").ShrinkToFit = False '// 取得 Set r = Range("C3") For iRow = 0 To 7 For iCol = 0 To 1 '// セル = 縮小表示状態 で出力 Debug.Print r.Offset(iRow, iCol).Address(False, False) & "セル = " & r.Offset(iRow, iCol).ShrinkToFit Next Next End Sub |
実行結果
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
C3セル = True D3セル = False C4セル = True D4セル = False C5セル = True D5セル = False C6セル = True D6セル = False C7セル = True D7セル = False C8セル = True D8セル = False C9セル = True D9セル = False C10セル = True D10セル = False |