Excel VBA質問箱 IV

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

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


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

【51382】ユーザーフォームにてオブジェクトの動的生成 アルジ 07/9/14(金) 9:53 質問[未読]
【51385】Re:ユーザーフォームにてオブジェクトの動... neptune 07/9/14(金) 10:16 発言[未読]
【51386】Re:ユーザーフォームにてオブジェクトの動... アルジ 07/9/14(金) 10:35 発言[未読]
【51388】Re:ユーザーフォームにてオブジェクトの動... ハチ 07/9/14(金) 10:43 発言[未読]
【51391】Re:ユーザーフォームにてオブジェクトの動... アルジ 07/9/14(金) 10:59 発言[未読]
【51392】Re:ユーザーフォームにてオブジェクトの動... inoue 07/9/14(金) 12:53 発言[未読]
【51395】Re:ユーザーフォームにてオブジェクトの動... アルジ 07/9/14(金) 16:16 発言[未読]
【51396】Re:ユーザーフォームにてオブジェクトの動... neptune 07/9/14(金) 17:19 発言[未読]
【51507】Re:ユーザーフォームにてオブジェクトの動... アルジ 07/9/21(金) 13:56 お礼[未読]
【51532】Re:ユーザーフォームにてオブジェクトの動... maka 07/9/21(金) 23:16 発言[未読]
【51543】Re:ユーザーフォームにてオブジェクトの動... ちん 07/9/23(日) 15:07 発言[未読]
【51554】Re:ユーザーフォームにてオブジェクトの動... アルジ 07/9/25(火) 9:11 お礼[未読]

【51382】ユーザーフォームにてオブジェクトの動的...
質問  アルジ  - 07/9/14(金) 9:53 -

引用なし
パスワード
   初心者のアルジです。excel2000で作成しています。

データベースからとり出した要素数(取得済み)だけオブジェクトの塊を
ユーザーフォーム上に作成したいです。
具体的には

〔オブジェクトA1、オブジェクトB1、…、オブジェクトi1〕

をひとつのまとまりとして、要素数分動的に生成したいです。
オブジェクト名も下記のように連番にしたいです。

要素数が31のときは
〔オブジェクトA1、オブジェクトB1、…、オブジェクトi1〕
〔オブジェクトA2、オブジェクトB2、…、オブジェクトi2〕
〔オブジェクトA3、オブジェクトB3、…、オブジェクトi3〕


〔オブジェクトA31、オブジェクトB31、…、オブジェクトi31〕

としたいです。

こんなことは出来るのでしょうか??
教えてください。

【51385】Re:ユーザーフォームにてオブジェクトの...
発言  neptune  - 07/9/14(金) 10:16 -

引用なし
パスワード
   ▼アルジ さん:
こんにちは

>初心者のアルジです。excel2000で作成しています。
>
>データベースからとり出した要素数(取得済み)だけオブジェクトの塊を
>ユーザーフォーム上に作成したいです。
>具体的には
>
>〔オブジェクトA1、オブジェクトB1、…、オブジェクトi1〕
>
>をひとつのまとまりとして、要素数分動的に生成したいです。
>オブジェクト名も下記のように連番にしたいです。
>
>要素数が31のときは
>〔オブジェクトA1、オブジェクトB1、…、オブジェクトi1〕
>〔オブジェクトA2、オブジェクトB2、…、オブジェクトi2〕
>〔オブジェクトA3、オブジェクトB3、…、オブジェクトi3〕
>:
>:
>〔オブジェクトA31、オブジェクトB31、…、オブジェクトi31〕
>
>としたいです。
>
>こんなことは出来るのでしょうか??
基本的には出来ますが、どこまで解って、何が解らないのでしょう?
オブジェクトと一言で言っても色々ありますから、具体的には何でしょう?

オブジェクトがUserForm内のコントロールを意味するならの限定付ですが、
1.取り敢えず、UserFormオブジェクトのcontrolsコレクションのAddメソッド
のHelpを眺めてみましょう。
2.それで解らなければ「コントロール 動的に追加 UserForm」でググって見ましょう。
3.それで解らなければ質問しましょう。

【51386】Re:ユーザーフォームにてオブジェクトの...
発言  アルジ  - 07/9/14(金) 10:35 -

引用なし
パスワード
   ▼neptune さん:
>基本的には出来ますが、どこまで解って、何が解らないのでしょう?
>オブジェクトと一言で言っても色々ありますから、具体的には何でしょう?
>
>オブジェクトがUserForm内のコントロールを意味するならの限定付ですが、
>1.取り敢えず、UserFormオブジェクトのcontrolsコレクションのAddメソッド
>のHelpを眺めてみましょう。
>2.それで解らなければ「コントロール 動的に追加 UserForm」でググって見ましょう。
>3.それで解らなければ質問しましょう。

neptuneさん返事ありがとうございます。
1,2をやってみます。ありがとうございました。
ちなみに使用するオブジェクトは、ラベル、テキストボックス、
スピンボタン、チェックボックスです。
もちろんこの一つ一つに機能をもたせるつもりです。
もし出来ないなら、クラスを使って何とかするつもりでした。

【51388】Re:ユーザーフォームにてオブジェクトの...
発言  ハチ  - 07/9/14(金) 10:43 -

引用なし
パスワード
   ▼アルジ さん:

>ちなみに使用するオブジェクトは、ラベル、テキストボックス、
>スピンボタン、チェックボックスです。
>もちろんこの一つ一つに機能をもたせるつもりです。
>もし出来ないなら、クラスを使って何とかするつもりでした。

この機能と言われているところが、各コントロールのイベントであるなら、
それなりの知識がないと出来ないですよ。
クラスで制御するしかないですね。

【51391】Re:ユーザーフォームにてオブジェクトの...
発言  アルジ  - 07/9/14(金) 10:59 -

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

>この機能と言われているところが、各コントロールのイベントであるなら、
>それなりの知識がないと出来ないですよ。
>クラスで制御するしかないですね。

ハチさん返信ありがとうございます。
ご指摘の通り各コントロールにイベントがあり、
いまはクラスで制御しています。

今作っているものを説明しますと、出退勤管理をし、
データ管理はaccessを使っています。

ここで月別のデータを取り出すときに
あらかじめ各コントロールを31個用意しておくのではなく
その月のデータを引っ張ってきたときに
各コントロールを出し、データを各コントロールに表示し
編集する目的です。
ちなみにvbはこのシステムを作るために初めて使っています。

となるとかなり難しいですよね。
クラスもまだ使いこなせてないです。。。

【51392】Re:ユーザーフォームにてオブジェクトの...
発言  inoue E-MAIL  - 07/9/14(金) 12:53 -

引用なし
パスワード
   >ここで月別のデータを取り出すときに
>あらかじめ各コントロールを31個用意しておくのではなく...
最大31個程度なら、最初から31個用意して配列化し、
不要なものを非表示にした方が手っ取り早いと思いますが。

イベントはクラス化しないと31件発生しますが、
共通プロシージャを呼び出す構造にすれば、
各3行で「:」を使ってゴマかせば各1行で済みます。

ゴマかした例は「Excelでお仕事!」の「ダウンロード」の
[カレンダー日付入力]にあります。
(ここではURLが紹介できないので検索して下さい)

【51395】Re:ユーザーフォームにてオブジェクトの...
発言  アルジ  - 07/9/14(金) 16:16 -

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

返事ありがとうございます。
配列化というものをちょっと勉強してみます。
あと私の書き方がまずかったですが、実は
オブジェクト(テキストボックスなど)が31日×15個×4フォームぐらい
あったので、これをいちいち一個一個にオブジェクト名を変えたり配置したり
というのがメンテナンスもしにくかったので動的に作りたかったのですが
難しそうですので後回しにしちゃいます。

クラス化については半分ぐらい出来ましたので
あとはinoueさんの配列化を使えば大丈夫かも知れません。

共通プロシージャのことすっかり忘れてました。
確かに難しいクラス化しなくても短くかけますね。
クラス化につまずいたらそちらでやらせていただきます。

>>ここで月別のデータを取り出すときに
>>あらかじめ各コントロールを31個用意しておくのではなく...
>最大31個程度なら、最初から31個用意して配列化し、
>不要なものを非表示にした方が手っ取り早いと思いますが。
>
>イベントはクラス化しないと31件発生しますが、
>共通プロシージャを呼び出す構造にすれば、
>各3行で「:」を使ってゴマかせば各1行で済みます。
>
>ゴマかした例は「Excelでお仕事!」の「ダウンロード」の
>[カレンダー日付入力]にあります。
>(ここではURLが紹介できないので検索して下さい)

【51396】Re:ユーザーフォームにてオブジェクトの...
発言  neptune  - 07/9/14(金) 17:19 -

引用なし
パスワード
   ▼アルジ さん:
こんにちは
ちょっと気になったので、
>▼inoue さん:
>
>返事ありがとうございます。
>配列化というものをちょっと勉強してみます。
>あと私の書き方がまずかったですが、実は
>オブジェクト(テキストボックスなど)が31日×15個×4フォームぐらい
>あったので、これをいちいち一個一個にオブジェクト名を変えたり配置したり
>というのがメンテナンスもしにくかったので動的に作りたかったのですが
>難しそうですので後回しにしちゃいます。
>
>クラス化については半分ぐらい出来ましたので
>あとはinoueさんの配列化を使えば大丈夫かも知れません。
VBには使用できるコントロール数に上限があります。
Excelでその制限がそのまま当てはまるかどうかは解りませんが、
コントロール数が多くなると不安定になるという話は掲示板でも
時々目にします。(そういえば最近は目にしませんが。。。)

VB6でのFormで使用できるコントロール数の上限は確か255個とされています。
私見ですが、VBのサブセットであるExcel VBAでもこれに準じておく方が無難
ではないでしょうか。
特に開発機以外でも使用する可能性がある時はそうした方が宜しいかと
思います。

【51507】Re:ユーザーフォームにてオブジェクトの...
お礼  アルジ  - 07/9/21(金) 13:56 -

引用なし
パスワード
   ▼neptune さん:
>VBには使用できるコントロール数に上限があります。
>Excelでその制限がそのまま当てはまるかどうかは解りませんが、
>コントロール数が多くなると不安定になるという話は掲示板でも
>時々目にします。(そういえば最近は目にしませんが。。。)
>
>VB6でのFormで使用できるコントロール数の上限は確か255個とされています。
>私見ですが、VBのサブセットであるExcel VBAでもこれに準じておく方が無難
>ではないでしょうか。
>特に開発機以外でも使用する可能性がある時はそうした方が宜しいかと
>思います。


返事が大変遅くなってすいません。
アドバイスありがとうございます。
今コントロール数はかなりの数になっていて
確かに不安定になっています。
ですが勤怠表を作っているのでどうしても
1つのユーザーフォームにかなり多くの
オブジェクトが出来てしまい、回避は不可能だと
思います。なるべくは減らしたいとは思っているのですが...

【51532】Re:ユーザーフォームにてオブジェクトの...
発言  maka  - 07/9/21(金) 23:16 -

引用なし
パスワード
   ▼アルジ さん:
>▼inoue さん:
>
>返事ありがとうございます。
>配列化というものをちょっと勉強してみます。
>あと私の書き方がまずかったですが、実は
>オブジェクト(テキストボックスなど)が31日×15個×4フォームぐらい
>あったので、これをいちいち一個一個にオブジェクト名を変えたり配置したり
>というのがメンテナンスもしにくかったので動的に作りたかったのですが
>難しそうですので後回しにしちゃいます。
>
>クラス化については半分ぐらい出来ましたので
>あとはinoueさんの配列化を使えば大丈夫かも知れません。
>
>共通プロシージャのことすっかり忘れてました。
>確かに難しいクラス化しなくても短くかけますね。
>クラス化につまずいたらそちらでやらせていただきます。
>
>>>ここで月別のデータを取り出すときに
>>>あらかじめ各コントロールを31個用意しておくのではなく...
>>最大31個程度なら、最初から31個用意して配列化し、
>>不要なものを非表示にした方が手っ取り早いと思いますが。
>>
>>イベントはクラス化しないと31件発生しますが、
>>共通プロシージャを呼び出す構造にすれば、
>>各3行で「:」を使ってゴマかせば各1行で済みます。
>>
>>ゴマかした例は「Excelでお仕事!」の「ダウンロード」の
>>[カレンダー日付入力]にあります。
>>(ここではURLが紹介できないので検索して下さい)


アルジさんへ

はじめまして、横から失礼します。ここに投稿できるほどの腕も無いのですが気になったので質問させてもらいたいです。

「オブジェクト(テキストボックスなど)が31日×15個×4フォームぐらい」とあったので、一度どこかの捨て見たいなシート(フォーム分とか、15個分とか)に全部打ち出して31日分をコントロールボタンで変えていくと言う方法はダメなのですか?

これなら、オブジェクトの数を少なく出来るような気がしますが?
変な質問ですみません。

【51543】Re:ユーザーフォームにてオブジェクトの...
発言  ちん  - 07/9/23(日) 15:07 -

引用なし
パスワード
   こんにちは、ちんといいます。横から失礼します。

maka さん:が言われている方法も一つの手法と思われます。
フォームだけで全てを行わず。EXCELのシートで、補助的にホームを使われてみたらいかがでしょうか?

データの原本がどちらになるかで、運用が異なると思います。
1.ACCESSのデータ
2.ACCESSから取込をしたEXCELデータ

以上、

【51554】Re:ユーザーフォームにてオブジェクトの...
お礼  アルジ  - 07/9/25(火) 9:11 -

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

>こんにちは、ちんといいます。横から失礼します。
>
>maka さん:が言われている方法も一つの手法と思われます。
>フォームだけで全てを行わず。EXCELのシートで、補助的にホームを使われてみたらいかがでしょうか?
>
>データの原本がどちらになるかで、運用が異なると思います。
>1.ACCESSのデータ
>2.ACCESSから取込をしたEXCELデータ
>
>以上、

返信ありがとうございます。

流れとしては、
accessのデータを取り込み、加工し、またaccessに保存となります

確かにエクセルのシートを使うのも手かも知れないです。
出来たら利用してみます。アドバイスありがとうございました。

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