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
で良い。