Access VBA:フォームのサイズに追従してサブフォームのサイズを変更する

フォームサイズが変更された場合、Form_Resizeイベントでサブフォームのサイズも合わせて変更するVBAを掲載しています。

BackHome Backフォーム

フォームのサイズが変更されると、サイズ変更時(Form_Resize)イベントが発生します。
このイベント内でフォームサイズを取得し、それに合わせサブフォームのサイズを変更します。
フォームのサイズはInsideWidth・InsideHeightプロパティかWidth・Heightプロパティで取得できます。
InsideWidthとInsideHeightプロパティはフォームの外側のサイズになります。
WidthとHeightプロパティは、スクロールバーや外枠などを除いた、フォーム内側のサイズになります。
次に掲載している「VBA:InputBoxのようなフォームを作成する|戻り値はキャンセルとOK」も参照してください。




都道府県の人口が登録されているフォームです。
データの操作は「F_都道府県人口Sub」のサブフォームを使用しています。

都道府県の人口が登録されているフォームです

フォームのサイズをドラッグし変更しても、中のサブフォームのサイズはそのままです。
そこでフォームのサイズを変更すると、それに追従しサブフォームのサイズも変更するようにします。

フォームのサイズをドラッグし変更しても、中のサブフォームのサイズはそのままです

サイズ変更時(Form_Resize)イベントの作成

フォームのプロパティシートを開きます。

  1. プロパティシートのサイズ変更時で、イベントプロシージャを選択します。
  2. 右の[…]ボタンをクリックします。
サイズ変更時(Form_Resize)イベントの作成

サブフォームのサイズを変更するVBAです。

サブフォームのサイズを変更するVBA

  • InsideWidthとInsideHeightプロパティを使用していますが、WidthとHeightプロパティでも構いません。
  • サブフォームのサイズは、マイナスしている数値で調整してください。
  • フォームのサイズを小さくしすぎるとエラーが発生します。その対処として、On Errorで対策してください。


Private Sub Form_Resize()
    Me!F_都道府県人口Sub.Width = Me.InsideWidth - 600
    Me!F_都道府県人口Sub.Height = Me.InsideHeight - 800
End Sub


フォームをドラッグし変更すると、サブフォームのサイズも合わせて変更できます。

フォームをドラッグし変更すると、サブフォームのサイズも合わせて変更できます


BackHome Backフォーム

Copyright(C) FeedSoft