Excel VBA テクニック集
列の幅





Excel VBA テクニック集

列の幅の取得・設定です。

取得した数値のタイプはDoubleです。ただし、標準フォントの 半角1 文字分が1単位ですので注意してください。

使い方は、ファイル一覧を使った応用の、「マクロ専用ファイル」によるマクロ実行に、下記コードを入れます。



の幅を取得するコードは、
    Debug.Print Excel_App.ActiveSheet.Columns("C").ColumnWidth
になります。

自動調整する場合は、
    Excel_App.ActiveSheet.Columns("C:H").Columns.AutoFit
のようにAutoFitメソッドを使います。

ところで、HeightとWidthの扱いに違いがあります。3行の高さを調べると、

Height = 18 , RowHeight = 18 になります。それぞれの単位はPointです。

C列の幅を調べると、

Width = 63.75 , ColumnWidth = 10 になります。
Widthについては、Height,RowHeightと同じ単位系になってますが、ColumnWidthについては、最初に説明したように半角文字数です。


さらに、上記のようにWidthはセルの幅になりますが、ColumnWidthはセルに入る文字数になってます。
ColumnWidth = 10 のとき Width = 63.75 です。ColumnWidth = 20 のとき Width = 123.75 になってます。倍にはなりません。

ColumnWidth , Width の増加分により、1文字当たりの Width が計算できます。空白幅も計算できます。
Width/1文字 = (123.75 - 63.75) / 10
空白幅 = 63.75 - Width/1文字 * 10
計算結果の単位が(Point)です。

(Pixel) = (Point) * 20 / 15
により、単位をピクセルに変換できます。

悪いことに、セルの幅を設定する場合です。
Height参照のみ
RowHeight設定・参照可
Width参照のみ
ColumnWidth設定・参照可
上記により、セルの幅の設定はColumnWidthを使うことになるますが、ColumnWidthでセルの幅を正確に設定することはできません。
そこで、
Width(Pixel)をWidth(Point)に変換
(Width(Point) - 空白幅) / (Width/1文字)
により、Width(Pixel)からColumnWidthが計算できます。

「こだわりハウス」写真館| 数学公式集| ピンポイントストリートビュー| FaceBook| Excel Vba テクニック集| Excel 計算式解析・他解析| 富山の建築家| Excel 計算式解析・他解析| 積分の定義・積分の記号の意味の研究|