• ベストアンサー

EXCEL VBA ColumnWidthについて

ColumnWidthを使って10cmのセルを動的に作りたいと思っています。 セルの数を10cm中に何個作るか、入力値によって変更できるようにします。 1セルの場合、45ポイントで丁度1cmになりました。 ですが、30セルで合計45ポイントになるようにすると、13.4cmになってしまいます。 複数のセルの合計値を10cmにするには、何ポイントを指定すれば宜しいでしょうか?

質問者が選んだベストアンサー

  • ベストアンサー
  • ap_2
  • ベストアンサー率64% (70/109)
回答No.2

>> ANo.1の補足 余白3.5じゃなく、3.75ptダッタ。 ColumnWidthは、たしか「1px相当(小数2位)」単位で指定可能。 最終的にセル幅はドット単位(px)になるので。適当に計算しちゃうと丸め誤差が生じやすく、セル数が多い場合は要注意です。 一度設定後、再調整で対応するとよいかも。  1.ColumnWidth=1でWidth取得  2.ColumnWidth=2でWidth取得  3.差分から、余白と1文字サイズ算出  4.セル幅設定  5.Width取得して、誤差分を調整・・・ 僕もやってマス。。

その他の回答 (1)

  • ap_2
  • ベストアンサー率64% (70/109)
回答No.1

ColumnWidth の単位は"pt"ではなく"文字数"。 1セルの幅は「余白3.5pt程度(左右1.5pt+罫線0.75pt)+N文字分の幅」になります。 ・ 余白幅は3.5ptとは限らない。 すくなくとも、列内セルに1.5pt以上の罫線を設定すると、罫線分が変わります。左右余白がフォントの影響を受けるかは未確認です。 ・ 1文字が何ptかは設定依存。 たしか標準フォントの"0"の幅(pt)が基準です。標準フォントはBookに埋め込まれるため、VBAで変更も可能ですが、変更しなければBook生成した環境の影響を受けることになるかと。 ・ 印刷/表示サイズは機器依存。 印刷サイズはプリンター、表示サイズはモニタに依存します。本来 1pt=1/72inchですが、その通り出力してくれる機器は少ないでう。 ・・・とデリケートなので、いろいろ確認してください。 ちなみに、Range.topとRange.Leftでセルの左上座標(pt)を取得できますよ。

関連するQ&A