#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'sWareのワンポイトテクニカルアドバイスをご利用ください。3000円/件〜でご支援します。
スタンドアロンからSQL Server対応まで、オーダーメイドのシステムを短納期・安価でお届けします
 

Copyright © T'sWare All rights reserved