Access フォームでは、すべてのパーセンテージまたは相対的なサイズを計算する必要があります。Access でのフォームと要素のサイズ設定が少し厳密でぎこちないことは認めますが、それは多くのデスクトップ アプリケーションの GUI 環境に当てはまります。.NET WPF はこの問題を解決しようとしたと思いますが、MS Access とは関係ありません。
私は通常、このようなものを使用することになります。このコードはメイン フォームに属します。サイズ直しはいつもここでしています。
Private Sub Form_Resize()
On Error Resume Next
Me.subform1.Width = Me.WindowWidth - 390
'or if you want to account for the form's left property
'Me.subform1.Width = Me.WindowWidth - (Me.subform1.Left + 100)
End Sub
編集1:
あなたのコメントに答えて、390 と 100 は twip です。Access のデザイン時はインチを使用しますが、ランタイム プロパティは twip を使用して設定する必要があります。
私はこれを少しいじりましたが、完全に正確であると思われるものを得ることができませんでした。私にとって最も論理的な意味を持つ以下のコードを投稿していますが、MS Access でフォームのサイズがどのように計算されるかについての詳細はわかりません。以下のコードは正確な結果を生成しないため、おそらく何かが欠けているようです。マージンを増やし、サブフォームの高さ計算のパーセンテージ/小数を減らすことで、比較的近いものを得ることができましたが、正確で正確な数値が必要な場合は不十分でした.
Private Sub Form_Resize()
On Error Resume Next
Const RMARGIN = 0
Const BMARGIN = 0
Me.subform1.Left = Round(Me.WindowWidth * 0.1) - RMARGIN
Me.subform1.Top = Round(Me.WindowHeight * 0.1) - BMARGIN
Me.subform1.Width = Round(Me.WindowWidth * 0.9) - (Me.subform1.Left + RMARGIN)
Me.subform1.Height = Round(Me.WindowHeight * 0.9) - (Me.subform1.Top + BMARGIN)
End Sub