Excel CellWidth - eiichiromomma/CVMLAB GitHub Wiki

(Excel) セル幅のピクセル指定

セルの幅をピクセル単位で指定する方法

エラい苦労したので残しておく。

DPIの換算

Excelのマクロ内部では72dpi、Excel自体(というかWindowsか?)は96dpi。

つまり普段セルの大きさを変える時に表示されているのは96dpiの値で、マクロ内で指定するピクセル値は72dpiに換算する必要がある。

指定可能な単位

ColumnWidthプロパティを弄る訳だが、

標準フォントサイズの"0"が何個入るか

が単位となる。 これしか使えない。

ちなみにWidthプロパティはRead Onlyなので参照は出来るが72dpiのピクセル値が帰ってくる。

地道な作業(恐らく環境により係数が異なる)

ColumnWidthを1にすると、Widthは9.75となった。

1/9.75

を係数として、必要なピクセル数を乗算すれば良いかと思ったが、微妙にズレる。

ひとまずColumnWidthを0,0.5,1,2,3と変えた時のWidthを取得してみる

ColumnWidth Width
0 0
0.5 5.25
1 9.75
2 15.75
3 21.75

となった。 0.5以下は置いといて、

ピクセル値(72dpi) = 3.75 + (ColumnWidth(0の数)) * 6

となる。 ColumnWidthについて求めれば

ColumnWidth = (ピクセル値(72dpi) - 3.75) / 6

となる。

例えば、画面上で32pixelの幅にしたい場合は

ピクセル値(72dpi) = 32 * 72 / 96 = 24
ColumnWidth = (24-3.75) / 6 = 3.375

を指定すれば良い。

おまけ

高さのプロパティRowHeightは72dpiのピクセル値なので、32pixelにしたければ

ピクセル値(72dpi) = 32 * 72 / 96 = 24

で良い。