重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

電子書籍の厳選無料作品が豊富!

こんばんは

FormOpenイベントの際に処理によって異なる数のコマンドボタンをフォーム上に表示させたいと思っています。

あらかじめ MAXの数だけフォーム上に設置して、表示、非表示するという方法もあるかと思いますが、記述することによってコマンドボタンを複数個新規作成後、表示させたいと思っています。

記述もしくは参考になるHP等がありましたら教えてください
よろしくお願いいたします

A 回答 (2件)

動的コントロール配列を使用すれば可能です。



フォーム上に Command1(0) というコントロール配列が存在する場合、下記のコードで Command1(1) ~ (4) を動的に生成できます。

Private Sub Form_Load()
  Dim i  As Long
  
  For i = 1 To 4
    Load Me.Command1(i)
    
    With Me.Command1(i)
      .Top = Me.Command1(0).Top + .Height * i
      .Visible = True
    End With
  Next
End Sub


【注意点】
・Visible = True に設定しないと可視状態とならない。
・Top プロパティ、 Left プロパティを設定するか、または Move メソッドで移動するかしないと、同じ位置に重なって表示される。
・コントロール配列でないコントロールは Load / Unload による動的生成 / 破棄はできない。(実行時エラーとなる)
・「動的」コントロール配列の名の通り、ソースコードの静的解析は困難。動的コントロール配列の使用でメリットが生じるか否かはケースバイケースですが、適用は慎重に。
    • good
    • 0

CreateControlをキーワードにして、WEB照会してみてください。


For Nextで所定回数繰り返す。
VBAでだけできたのかVBでもできたのか、記憶が薄れていますのが、朝時間がなく調べられないのでよろしく。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!