読者です 読者をやめる 読者になる 読者になる

備忘録:Access ・サブフォーム等のオブジェクトをウインドウサイズに合わせ自動調整

フォームの中にタブコントロールを配置して、帳票リストなどを切り替えて表示したい時、「親シート」の中に「タブコントロール」を作成して「タブコントロール」の中に「帳票フォーム(サブフォーム)」を埋め込む事になりますが、この場合サブフォームのサイズの上限が、タブコントロールや親フォームのサイズに制約されてしまいます。
かと言って最初から大きく作ると、Accessのウインドウサイズを小さく開いた場合、親フォームとサブフォームのスクロールバーに右往左往する事態になったり、毎度スクロールしないとタブが隠れてしまったりと大変です。

このような場合、ウインドウサイズに合わせて配下のコントロールのサイズを都度変更するようなVBAを書くことで改善できます。

親フォームの「サイズ変更時」のイベントに以下のソースを貼り付けます。
Me.InsideHeightは、ヘッダーやフッターのサイズも合計した高さを取得する為、ヘッダーとフッターの高さを差し引く事で、詳細部分の高さを算出し、その数字を埋め込みオブジェクトの高さに指定します。
「-450」はタブの厚み分の数字なので、タブオブジェクトを使用しない場合は不要です。

    'サブシートサイズ調整
    Me!サブシート名.Height = (Me.InsideHeight) - (Me.フォームヘッダー.Height) - (Me.フォームフッター.Height) - 450
    Me!サブシート名.Width = Me.InsideWidth
    'タブコントロールサイズ調整
    Me!タブコントロール名.Height = (Me.InsideHeight) - (Me.フォームヘッダー.Height) - (Me.フォームフッター.Height) - 450
    Me!タブコントロール名.Width = Me.InsideWidth