#577 | コントロールが配置されたセクションを調べるには? | VBA | |
フォームやレポートには、そのデザインに応じてさまざまな場所にコントロールを配置します。同じラベルコントロールであっても、フォームヘッダーセクションに配置することもあれば、詳細セクションに配置することもあります。 そのようなとき、VBAでそれぞれのコントロールのあるプロパティの値を取得すると、そのコントロールがどのセクションに配置されているかを調べることができます。 それによって、たとえば同じラベルコントロールであっても、「詳細セクションにあるラベルだけフォントのサイズを一括して変更する」といったことができます。もちろんそれだけならデザインビューで手作業でやってしまった方が早いですが、コントロールにはたくさんのプロパティがありますので、多くのプロパティを同時に変更したいようなとき、あるいはたくさんのフォームに対して同じような処理をしたいようなときにはVBAで処理すると楽です。 VBAを使ってあるコントロールが所属するセクションを取得するには、「Control」オブジェクトの「Section」プロパティの値を調べます。この値を組み込み定数と比較することで、「acHeaderならヘッダー」、「acDetailなら詳細」、「acFooterならフッター」というように判別することができます。 次の例では、「frmセクション調査」という名前のフォームに配置されたすべてのコントロールをループで取得し、所属するセクションで処理分岐し、セクションに応じて書式関連プロパティの変更を行っています。 Dim frm As Form Dim ctl As Control '対象フォームを設定 Set frm = Forms!frmセクション調査 'コントロールの一覧を取得するループ For Each ctl In frm.Controls With ctl '所属するセクションで処理分岐 Select Case .Section Case acHeader 'フォームヘッダーの場合 '背景色を非透明の赤に変更 .BackStyle = 1 .BackColor = vbRed Case acDetail '詳細セクションの場合 'フォントサイズを20に変更 .FontSize = 20 Case acFooter 'フォームフッターの場合 'フォントを斜体に変更 .FontItalic = True End Select End With Next ctl 実行例: |
|||
|
Copyright © T'sWare All rights reserved |