« Chr関数に使いそうなASCIIコードの表 | トップページ | 任意の整数から任意の整数までの乱数 »

2010年1月12日 (火)

セルの縦と横の比

意外に難しいのが
セルの高さと幅の変更

私はExcelでセルを使って描画する目的で
セルの高さと幅を1:1にしたいと思ったのです。
VBAヘルプでそれらしい

ColumnWidth
RowHeight

を見つけたので
次のようなコードで試す。

とりあえずセルの高さ幅を変更するコード:

Sub macro100111a()
'セルA1の高さ・幅を変更
   
    Range("A1").RowHeight = 10
    Range("A1").ColumnWidth = 10
   
End Sub

結果は
Pic20100111a

明らかに1:1ではない。
なぜ???
単位は何?

VBAヘルプによると、
ColumnWidth プロパティ:
列幅の単位は、標準スタイルの 1 文字分の幅に相当
プロポーショナル フォントでは、
数字の 0 の幅が列幅の単位になるそうです。

RowHeight プロパティ
ポイント単位のようです。

標準スタイルの 1 文字分の幅?
プロポーショナル フォント?
そもそもポイントってどんな単位?

ちょっと?が多すぎて混乱します。

調べ物が多そうなので
まずは、終わり良ければすべて良し的
ドロクサイ手法を考えます。

手動で行の高さ・列の幅を変更する時
このようにピクセル単位が表示されます。

Pic20100111b

Pic20100111c

これを使います。
高さ・幅を100x100ピクセルにしたら
目分量的に1:1のようなので
この高さ75:幅11.88の比率を利用します。

つまり、
例えば高さをHにしたい時
幅W = 11.88 * H / 75 です。
これを利用したコードはこちら。

とりあえずセルの高さ幅を変更するコード2:

Sub macro100111b()
'セルA1の高さ・幅を1:1に変更
'ドロクサイ手法
   
    Cells.RowHeight = 40
    Cells.ColumnWidth = 11.88 * Cells.RowHeight / 75
   
End Sub

結果:
Pic20100111d

見た目には1:1になったかと思われます。

ということで
疑問点は多数かつ
ドロクサイ手法ではありますが
まあまあ目的は達成されたかと…

|

« Chr関数に使いそうなASCIIコードの表 | トップページ | 任意の整数から任意の整数までの乱数 »

コメント

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

トラックバック


この記事へのトラックバック一覧です: セルの縦と横の比:

« Chr関数に使いそうなASCIIコードの表 | トップページ | 任意の整数から任意の整数までの乱数 »