#553 フォームの指定セクションのコントロールを列挙する方法 フォーム、VBA

フォームには、コントロールを配置する場所としていくつかの領域があります。その領域のことを「セクション」と呼び、よく使われるものとして、「ヘッダーセクション」、「詳細セクション」、「フッターセクション」の3つがあります。

ヘッダーとフッターに配置されたコントロールは固定的に画面上部と下部に表示されます。一方、詳細セクションに配置されたコントロールは、フォームが単票形式の場合は他のセクションに配置した場合と変わりありませんが、帳票形式の場合にはレコードごとにこのセクション内のコントロールがスクロールするという特徴があります。

ここでは、あるフォームについて、指定されたセクション内に配置されたコントロールだけを列挙するプログラムを紹介します。

次の例では、「商品」フォームに配置されているコントロールのうち、「ヘッダーセクション」に配置されたコントロールだけを列挙しています。

Dim frm As Form
Dim ctl As Control

Set frm = Forms("商品")
For Each ctl In frm.Section(acHeader).Controls
  Debug.Print ctl.Name
Next ctl


ポイントとしては、「Controls」コレクション内の要素をループで取得する際、「フォームオブジェクト.Section(セクションを表わす定数).Controls」という表記をすることです。”セクションを表わす定数”として、次のような値を指定することで、それぞれのセクションを指定することができます。
  • acDetail → 詳細セクション
  • acHeader → ヘッダーセクション
  • acFooter → フッターセクション

実行例:
フォームのデザイン

イミディエイトウィンドウの実行結果
| Index | Prev | Next |



T'sFactory
Accessで動く生産管理DB
Ureru Express
Webで使う販売顧客管理
Access開発&アドバイス
DB開発やテクニカルアドバイス
Copyright © T'sWare All rights reserved