« Cellsの解剖 | トップページ | Excelは見えないところでギザ休む »

2010年2月11日 (木)

ピクセル単位でセルの高さと幅を指定する

ピクセル単位でセルの高さと幅を指定する

記事「セルの縦と 横の比
記事「セルの高さ と幅の設定
でセルの高さと幅を設定しようとしてきました。

思ったとおりに高さと幅が設定できないので
またまた違う方法でアプローチしたいと思います。

msdnの該当ページによると
どうも最終的にセルの高さと幅を決める単位は
ピクセルのようなので
ピクセル単位でセルの高さと幅を指定したいと思います。

RowHeigthとColumnWidthは
それぞれポイント単位と文字単位で指定するので
直接ピクセル単位で指定はできません。

かといって
ピクセルをポイントに変換する関数などは
見当たらない。

そこで、もう何回も使っているあの比率を
くどくどと使っちゃいます。

幅    11.8ポイント:100ピクセル
高さ   75ポイント:100ピクセル

つまり

幅    0.118ポイント:1ピクセル
高さ   0.75ポイント:1ピクセル

この比率を使います。

ようするに単なる掛け算で
例えば、
幅を30ピクセルにしたかったら
まず

30 * 0.118 = 3.54 ポイント

のようにピクセルからポイント単位に変換してから
ColumnWidthに使う。
そうするとこの様になります。

Cells.ColumnWidth = 30 * 0.118

汎用性を持たせるために
以下のコードでは
30のところを変数にして
いろいろと設定できるようにしました。

コードはこちら

ピクセル単位でセルを正方形するコード:

Sub macro100211a()
'ピクセル単位でセルを任意の正方形にする
    Sheets.Add
   
    Dim L As Integer
    '一辺の長さ
    L = 18
    Cells.RowHeight = L * 0.75
    Cells.ColumnWidth = L * 0.118
   
End Sub

実行後のセルはこの様になりました。
Pic20100211a

上のコードでは
セル全部を正方形に変更しました。

今度は高さと幅の両方を設定できるようにします。

また、再利用性を考えて
高さと幅を設定するプロシージャを独立させて
そのプロシージャを
他のプロシージャから呼び出すことにしました。

下のコードでは macro100211b において
SetCellsHW プロシージャを呼び出して
値を渡しています。
MyHeightに高さ、MyWidthに幅を指定します。

コードはこちら
macro100211b の方を実行してください。

ピクセル単位でセルの高さと幅を指定するコード:

Sub macro100211b()
'ピクセル単位でセルの高さと幅を指定する
    Sheets.Add
   
    Call SetCellsHW(30, 50)
   
End Sub
Sub SetCellsHW(MyHeight As Integer, MyWidth As Integer)
'ピクセル単位でセルの高さと幅を指定する

    Cells.RowHeight = MyHeight * 0.75
    Cells.ColumnWidth = MyWidth * 0.118

End Sub

実行後のセル
Pic20100211b

正方形にする方のコードで
いろいろな値を試しましたが
値が小さいと正方形に見えないくらい
高さと幅に差が出るようです。

|

« Cellsの解剖 | トップページ | Excelは見えないところでギザ休む »

コメント

この記事へのコメントは終了しました。

トラックバック


この記事へのトラックバック一覧です: ピクセル単位でセルの高さと幅を指定する:

« Cellsの解剖 | トップページ | Excelは見えないところでギザ休む »