5

Word 2007 の VBA をプログラミングしています。

スクリプトでサイズを変更する必要がある UserForm を作成しました。

ピクセルではないことに気付きました

 Me.Width = pixelW   // form appears about 20% larger than the pixel width

ツイップスでもない

 Me.Width = (((1 / TwipsPerPixelX()) * pixelW)) / 1)  // form appears very small

Office 2007 VBA では、フォームの幅と高さはどのように測定されるのでしょうか。

4

2 に答える 2

7

コードを介してフォーム上のコントロールを操作する場合、サイズはデフォルトで twip です (フォームの ScaleMode プロパティを変更すると、別の単位を使用するように選択できると思います)。

換算式が間違っています (間違いやすいです)。これを関数にラップして、コードの重複を回避し、すべての重複でタイプミスの可能性があることを試してください

Function nTwipsFromPixelsX(ByVal nPixels As Long) As Long
  nTwipsFromPixels = TwipsPerPixelX() * nPixels
End Function
于 2010-02-28T14:14:56.980 に答える
6

VBA for Access を使用する場合、サイズをユーザー インターフェイス (センチメートル) から管理するかコード (twips) から管理するかに応じて、通常、サイズを twip やセンチメートルで表します。例として、コンボ ボックス コントロールの列サイズをセンチメートル (フォームがデザイン モードのときにコントロールのプロパティに対応する値を入力することにより) または twips (フォームが開いている間にコードからこれらの値を更新することにより) で設定できます。 .

これはVBA for Wordにも当てはまると思います。cmToTwips と TwipsToCm 関数の両方を書き留めて、メジャー変換を行うことをお勧めします

于 2010-02-28T13:26:03.497 に答える