Excel VBA質問箱 IV

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

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


2202 / 13645 ツリー ←次へ | 前へ→

【69384】ActiveXコントロール自動表示について BLV 11/7/3(日) 19:10 質問[未読]
【69385】Re:ActiveXコントロール自動表示について UO3 11/7/3(日) 20:03 発言[未読]
【69386】Re:ActiveXコントロール自動表示について BLV 11/7/3(日) 20:26 質問[未読]
【69387】Re:ActiveXコントロール自動表示について UO3 11/7/3(日) 22:17 発言[未読]
【69388】Re:ActiveXコントロール自動表示について BLV 11/7/3(日) 22:48 質問[未読]
【69390】Re:ActiveXコントロール自動表示について ichinose 11/7/4(月) 7:11 発言[未読]
【69389】Re:ActiveXコントロール自動表示について neptune 11/7/3(日) 23:49 発言[未読]
【69392】Re:ActiveXコントロール自動表示について UO3 11/7/4(月) 9:39 発言[未読]
【69393】ActiveXコントロールは、重いです。 Jaka 11/7/4(月) 10:08 発言[未読]
【69394】Re:ActiveXコントロールは、重いです。 カリーニン 11/7/4(月) 22:18 発言[未読]
【69421】Re:ActiveXコントロール自動表示について BLV 11/7/7(木) 21:19 お礼[未読]

【69384】ActiveXコントロール自動表示について
質問  BLV  - 11/7/3(日) 19:10 -

引用なし
パスワード
   コマンドボタンコンボボックス等を最初に表示していない状態から
マクロで表示させることは可能でしょうか?

【69385】Re:ActiveXコントロール自動表示について
発言  UO3  - 11/7/3(日) 20:03 -

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

こんばんは

いろいろ方法があると思いますが、

1.ActiveXコントロールをあらかじめ配置しておき、そのVisibleプロパティをFalseにしておいて
  表示必要なタイミングで、Trueにする。
2.必要になったときに、ActiveXコントロールを自動生成する。
  自動生成そのものはマクロ記録でできると思います。
  課題は、この場合、あらかじめ、そのイベントプロシジャをシートモジュールに書いておくことができず
  クラスを用意して、そこでイベントを受ける必要がでてきたり、あるいは、不要になった時に
  コントロールもクラスインスタンスも消滅させなきゃいけないということで、ちょっと面倒ですかね。

【69386】Re:ActiveXコントロール自動表示について
質問  BLV  - 11/7/3(日) 20:26 -

引用なし
パスワード
   ご回答ありがとうございます。

データが増える度にActiveXコントロールも増やしたいので、
1のパターンは出来ません。
(あらかじめ生成する数を把握できないため)

2のパターンでやりたいのですが、
(あれから調べたところActiveSheet.Buttons.Addで増えるみたいですが)
それほど大変なことなのでしょうか?

無知ですみませんが、よろしくお願い致します。

【69387】Re:ActiveXコントロール自動表示について
発言  UO3  - 11/7/3(日) 22:17 -

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


>(あれから調べたところActiveSheet.Buttons.Addで増えるみたいですが)
>それほど大変なことなのでしょうか?

Buttons.Add で生成されるのはActiveXコントロールではなくフォームツールのコントロールですが?
生成したいのはどちらですか?
また、コントロールの種類はボタンだけでいいのですか?

で、ボタンを押したときの処理はどう考えておられますか?
(個々のボタン毎に全く別処理。あるいは、ほぼ同じ処理)

【69388】Re:ActiveXコントロール自動表示について
質問  BLV  - 11/7/3(日) 22:48 -

引用なし
パスワード
   >Buttons.Add で生成されるのはActiveXコントロールではなくフォームツールのコントロールですが?
>生成したいのはどちらですか?
ActiveXです。

>また、コントロールの種類はボタンだけでいいのですか?
テキストボックス、コンボボックス、コマンドボタン、チェックボックスです。
>
>で、ボタンを押したときの処理はどう考えておられますか?
>(個々のボタン毎に全く別処理。あるいは、ほぼ同じ処理)
それぞれ(テキストボックス、コンボボックス、コマンドボタン、チェックボックス)で同処理をしたいと考えております。

以上、よろしくお願い致します。

【69389】Re:ActiveXコントロール自動表示について
発言  neptune  - 11/7/3(日) 23:49 -

引用なし
パスワード
   ▼BLV さん:
>コマンドボタンコンボボックス等を最初に表示していない状態から
>マクロで表示させることは可能でしょうか?
可能ですよ。

最初に非表示で作成し於いて、visibleプロパティを変更するだけです。
これなら簡単です。

質問の意味が新たに不特定数のactiveXを追加してそのイベントを
受け取りたいなら格段に必要とするスキルの難易度は上がります。
もし、知りたいのがこちらならこの方法はあきらめて上記の方法を
とる事をお勧めします。

【69390】Re:ActiveXコントロール自動表示について
発言  ichinose  - 11/7/4(月) 7:11 -

引用なし
パスワード
   ▼BLV さん:
おはようございます。

>>生成したいのはどちらですか?
>ActiveXです。
ActiveXコントロールとシートの相性がよくないです。
動的にActiveXコントロール作成後にモジュールレベルの変数が
初期化されてしまう問題を以前、私もこの掲示板で取り上げたことがありました。
やるなら、モジュールレベルの変数を別のブックに移す なんて方法が
考えられますが、応急処置的な方法です。


動的にコントロールを追加したいなら、Excelコントロール
(コマンドバー「フォーム」にあるコントロール)で代替出来ないか
検討してください。


>
>>また、コントロールの種類はボタンだけでいいのですか?
>テキストボックス、コンボボックス、コマンドボタン、チェックボックスです。
>>
>>で、ボタンを押したときの処理はどう考えておられますか?
>>(個々のボタン毎に全く別処理。あるいは、ほぼ同じ処理)
>それぞれ(テキストボックス、コンボボックス、コマンドボタン、チェックボックス)で同処理をしたいと考えております。
>
>以上、よろしくお願い致します。

【69392】Re:ActiveXコントロール自動表示について
発言  UO3  - 11/7/4(月) 9:39 -

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

おはようございます

ichinoseさん、neptuneさんからのアドバイスを、よく検討してみてください。
もし、BLVさんがシート上のコントロールの扱いにたけてらっしゃるなら動的な追加も
結構かと思いますが、

1.まずはneptuneさんのアドバイス(私も最初のレスで申し上げましたが)
  Visibleプロパティで対応するところからはじめて見られてはいかがでしょう。
  何個必要になるかわからないということは理解できますが、たとえば、まず
  100個ぐらいを準備してスタート。動的な生成の替わりに、Visible=True と
  配置の位置(Left,Top)を必要なセルの位置に合わせるコードにしてはいかがでしょう。
2.次に、ichinoseさんのアドバイスにあるように、シートとActiveXコントロールの相性は、
  あまりよくないといわれています。確かにActiveXコントロールはプロパティが豊富、
  イベントもきめ細かに設定できるという利点があり、MSとしては、フォームツールを
  廃止してActivXコントロールに一本化したいという意図でしょうけど、コントロールを
  受けるコードの構成についても、その難易度(というかめんどくささ)が段違いです。
  やるとしても、フォームツールのコントロールを生成して、その OnActionプロパティ
  に、対応する処理プロシジャを登録したほうが簡単ですね。
3.どうしてもActiveXでというご意向でしょうか?
  それなら、処理プロシジャについては、申し上げたようにクラスをアサインして・・・・
  ということになります。
  コード案をアップしたとしても、クラス処理に精通されていなければ、呪文のようなもの
  になってしまい、今後のBLVさんの保守作業上もネックになると思われますが・・?

【69393】ActiveXコントロールは、重いです。
発言  Jaka  - 11/7/4(月) 10:08 -

引用なし
パスワード
   すでに色々書かれているようなので、簡単に言うと
ActiveXコントロールは、重いです。
100個ぐらいでも異様に重たくなると思います。
どんだけ遅くなるか、1度作って体験してみるのも良いかと思います。

【69394】Re:ActiveXコントロールは、重いです。
発言  カリーニン  - 11/7/4(月) 22:18 -

引用なし
パスワード
   >すでに色々書かれているようなので、簡単に言うと
>ActiveXコントロールは、重いです。
>100個ぐらいでも異様に重たくなると思います。

重くなりますね〜。

以前遊びでユーザーフォームにラベルをクラスモジュールを
使用して10列×10行配置してMouseMoveイベントでマウス
カーソルが通過したラベルに色を付けるというお絵かきマクロ
を作ったことがあるけど行・列を増やせば増やすほど当然なが
ら等比級数的に処理が遅くなっていった、ということがありま
した。

【69421】Re:ActiveXコントロール自動表示について
お礼  BLV  - 11/7/7(木) 21:19 -

引用なし
パスワード
   返信が遅くなり申し訳ありません。
皆様丁寧に教えて頂きありがとうございました。

私が行おうとしていたことが、
いかに難解かが理解できました。

あらかじめ作成しておき、非表示にしておくパターンでなんとかカバーしてみます。
ありがとうございました。

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