MENU

エクセルVBA(3)ユーザーフォームのグリッド間隔はややこしい

エクセルでユーザーフォームをデザインするとき、グリッドの設定とデザイン画面のドット間隔が微妙に違うので調べてみました。

グリッドの設定はVBEの[ツール]→[オプション]で表示されるダイアログの[全般]タグの[グリッドの設定]で行います。初期値は幅、高さともに6です。グリッド単位:twip という表示がありますが、一般の単位(1twip=1/20pt)とはどうも違う(よく分かりません)ようなので、この記事では扱いません。

[グリッドの設定]内の[グリッドの表示]チェックボックスがオンのときはデザイン画面にグリッド位置を示すドットが表示されます。また[グリッドに合わせる]チェックボックスがオンのときはコマンドボタンなどのコントロールがグリッド位置に強制されるので整列が楽にできます。

画像はグリッド間隔を6に設定した例です。コントロールの位置とサイズのプロパティ(Left, Top, Width, Height)からデザイン画面のドット間隔は6だと分かります。グリッド間隔に設定した値がそのままデザイン画面のドット間隔になっているようにも思えますが、実際はちょっと違います。

例えばグリッド間隔を4に設定するとデザイン画面ではドット間隔が 3.75 になります。

次の表はグリッド間隔を1から10まで変更してドット間隔を調べたものです。モニター(1920*1080)で表示したときのピクセル数もついでに調べています。ただしグリッド間隔を1に設定することはできなかったので想定値です(括弧つき)。

グリッド間隔
設定値
(a)
デザイン画面
ドット間隔
(b)
モニター表示
ピクセル
(c)
1 (0.75) (1)
2 2.25 3
3 3 4
4 3.75 5
5 5.25 7
6 6 8
7 6.75 9
8 8.25 11
9 9 12
10 9.75 13

a, b, c の間には次の式が成り立ちます

b=c×3/4、c=round(a×4/3,0)

モニター表示のピクセル数はグリッド間隔に3分の4を掛けたものです(四捨五入)。これに4分の3をかけるとデザイン画面のドット間隔となります。
表から分かるようにグリッド間隔が3の倍数の時はドット間隔もグリッド間隔と同じになります。しかもプロパティが常に整数になるためユーザーフォームのデザインも楽です。私はグリッド間隔を初期値の6は少し大きいので3に設定していますが、細かい調整もしやすいので満足しています。

追記:グリッド間隔に掛ける定数がなぜ3分の4なのか、3分の4はどこから来ているのか、よくわかりません。もしかすると昔のブラウン管モニターの縦横比が関係しているのかも?

最後まで御覧いただきありがとうございました。