#435 複数のコマンドボタンを一気に作る方法 フォーム、VBA

フォームにコマンドボタンを配置したい場合、ツールボックスとマウスを使って簡単に作成することができます。通常はそのような操作でよいのですが、同じようなプロパティを持ったボタンを大量に配置したい場合もあります。そのようなとき、VBAを使うと、一気に複数のコマンドボタンを自動生成させることができます。

それには、「CreateControlメソッド」を使います。

このメソッドでは、次のような引数を与えることによって、各種のコントロールをプログラムから生成することができます。

  CreateControl(フォーム名, コントロールの種類, セクション)
  • フォーム名には、コントロールを配置したいフォーム名を指定します。
  • 生成したいコントロールの種類には、次のような定数を指定します。
    • acLabel → ラベル
    • acTextBox → テキストボックス
    • acCommandButton → コマンドボタン
    • acToggleButton → トグルボタン
    • acComboBox → コンボボックス
    • acListBox → リストボックス
    • acCheckBox → チェックボックス
    • acOptionButton → オプションボタン
    • acOptionGroup → オプショングループ
    • acImage → イメージ
    • acLine → 直線
    • acRectangle → 四角形
  • セクションにはコントロールを配置したいセクションの定数を指定します。省略した場合は詳細セクションに生成されます。
    • acDetail → 詳細セクション
    • acHeader → フォームヘッダー/レポートヘッダー
    • acFooter → フォームフッター/レポートフッター
    • acPageHeader → ページヘッダー
    • acPageFooter → ページフッター

次のサンプルコードでは、「フォーム1」の詳細セクション上に10ケのコマンドボタンを一気に自動生成しています。まず「フォーム1」を新規作成し(その名前で保存されている必要はありません)、”デザインビュー”の状態にしておきます。そして、標準モジュールから次のプロシージャを実行します。

Public Sub CreateCmdButton()

  Dim cmd As CommandButton
  Dim iintLoop As Integer

  '10ケのボタンを生成するループ
  For iintLoop = 1 To 10
    'コマンドボタンを生成
    Set cmd = CreateControl("フォーム1", acCommandButton)
    With cmd
      '名前を設定
      .Name = "cmd" & iintLoop
      '標題を設定
      .Caption = iintLoop & "番目のボタン"
      '上位置を設定(0.8cm間隔で配置)
      .Top = (iintLoop - 1) * 567 * 0.7
      '
      'その他、この部分でボタンに対するさまざまなプロパティ設定が可能です
      '
    End With
  Next iintLoop

End Sub


データベースウィンドウから新規作成された直後の空のフォーム 空のフォーム

プロシージャ実行後のフォームのデザイン
実行後のフォームのデザイン
| Index | Prev | Next |



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