Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


1704 / 13646 ツリー ←次へ | 前へ→

【72519】controls.add free 12/8/19(日) 15:51 質問[未読]
【72522】Re:controls.add UO3 12/8/19(日) 16:34 発言[未読]

【72519】controls.add
質問  free  - 12/8/19(日) 15:51 -

引用なし
パスワード
   userformに動的にボタンやラベルを追加したいです。

Private Sub UserForm_Initialize()
Dim cpstr, material(3)
Dim i as long
  
  material(0) = "A"
  material(1) = "B"
  material(2) = "C"
  material(3) = "D"

for i= Lbound(material) to Ubound(material)
 Set cpstr = Me.Controls.Add("Forms.label.1", "label" & i)

  With cpstr
   .Left = (200*i)+200
   .Top = 216
   .Height = 14.95
   .Width = 100
   .caption=material(i)
  end with
next i  

set cpstr=nothing
end sub

Set cpstr = Me.Controls.Add("Forms.label.1", "label" & i)
1.この"label"& i は生成されるオブジェクト名前になるのですか?
2.同じ名前がuserform上に存在したらどうなりますか?

調べてラベルの動的配列を作る方法を見つけたのですが、イマイチわかりません。
後この、ラベルを操作するにはクラスを使えを書かれています。

詳しく解説されているページなどありましたら追加で教え願います。

素人でコードがひどいと思いますが、皆様よろしくお願いします。

【72522】Re:controls.add
発言  UO3  - 12/8/19(日) 16:34 -

引用なし
パスワード
   ▼free さん:

こんにちは

コントロールの動的生成と、その配列処理のための方策(クラス等)は、密接な関係がありますが
必ずしも、同じテーマではありません。

動的生成については
ht p://msdn.microsoft.com/ja-jp/library/cc708938.aspx
ht p://www.clip.gr.jp/~imai/PukiImaiWiki/index.php?Excel%2FVBA%2F%A5%B3%A5%F3%A5%C8%A5%ED%A1%BC%A5%EB%A4%CE%C6%B0%C5%AA%BA%EE%C0%AE
といったあたりが参考になりますでしょうか。
また、VBEのヘルプで Controls.Add で検索すると、説明ページがありますので一読されればよろしいかと。
(2003の場合は、Add で検索して Add メソッド (Forms) を参照)

配列処理のための方策(クラス等)については、以下のページを皆さん、よく参照しておられるようですね
h tp://www.h3.dion.ne.jp/~sakatsu/Breakthrough_P-Ctrl_Arrays.htm

で、
>1.この"label"& i は生成されるオブジェクト名前になるのですか?
>2.同じ名前がuserform上に存在したらどうなりますか?

これについては、質問するより、自分で試してみられてはいかがでしょう。
そうすることによって、できる、できないということが身をもってわかりますし
理解も深くなると思いますよ。

●ところで、なぜ、動的にコントロールを生成したいのですか?
 アップされたコードを見る限り、動的生成の必要性は全くありませんが?

1704 / 13646 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free