Excel VBA質問箱 IV

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

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


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

【60498】テキストボックスとコンボボックスに何かが入力された時に一括処理を走らせ... KK 09/2/24(火) 15:47 質問[未読]
【60500】Re:テキストボックスとコンボボックスに何... neptune 09/2/24(火) 17:19 発言[未読]
【60504】Re:テキストボックスとコンボボックスに何... KK 09/2/25(水) 8:49 質問[未読]
【60508】Re:テキストボックスとコンボボックスに何... neptune 09/2/25(水) 12:44 発言[未読]
【60530】Re:テキストボックスとコンボボックスに何... neptune 09/2/25(水) 22:34 発言[未読]
【60534】Re:テキストボックスとコンボボックスに何... KK 09/2/26(木) 10:59 お礼[未読]

【60498】テキストボックスとコンボボックスに何か...
質問  KK  - 09/2/24(火) 15:47 -

引用なし
パスワード
   皆様、お世話になります。
質問させていただきたく、よろしくお願い致します。。


ユーザーフォームに、テキストボックスとコンボボックスをそれぞれ20個、
計40個ほど配置しています。

そこで、これら40個のうち、どれか一つでも何か文字(文章や単語)を入力し、確定したら、
その都度40個のオブジェクトに何が入力されているのか、というのを一括でチェックできる処理を
作りたいのですが、どのように組めばよろしいでしょうか?


一連の流れは、下記のようになります。

例)
1.userform1の(例えば)textbox.12に「山田花子」と入力する

2.テキストボックス20個とコンボボックス20個に何が入力されているのかを計40個のオブジェクトを全部チェックする処理を走らせる

3.sheets(1)のセル(21,10)から、セル(60,10)までの40個のセルに、2.のオブジェクトで何が入力されているのか、という結果を順番に出力する

4.結果、sheets(1)のセル(32,10)に「山田花子」という文字が出力されている


というイメージです。


大変お手数ですが、ご教授お願い致します。

【60500】Re:テキストボックスとコンボボックスに...
発言  neptune  - 09/2/24(火) 17:19 -

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

>ユーザーフォームに、テキストボックスとコンボボックスをそれぞれ20個、
>計40個ほど配置しています。

>そこで、これら40個のうち、どれか一つでも何か文字(文章や単語)を入力し、確定したら、
>その都度40個のオブジェクトに何が入力されているのか、というのを一括でチェックできる処理を
>作りたいのですが、どのように組めばよろしいでしょうか?
コントロール数が多いので、私だったらClassを使います。

以前に書いた奴ですが、参考にはなると思います。
ht tp://www.vbalab.net/vbaqa/c-board.cgi?cmd=one;no=53313;id=excel

処理のフローは
例)
で良いのでは?

【60504】Re:テキストボックスとコンボボックスに...
質問  KK  - 09/2/25(水) 8:49 -

引用なし
パスワード
   neptuneさん。
記入いただきありがとうございます。


>以前に書いた奴ですが、参考にはなると思います。
>ht tp://www.vbalab.net/vbaqa/c-board.cgi?cmd=one;no=53313;id=excel

ありがとうございます。
ちょっと難しそうですが、どのような仕組みで動くのか確認してみます。


>処理のフローは
>例)
>で良いのでは?

はい。
一番ネックになっているのが、例)の 1 の直後で
どのようなコード(イベント)を書けばよいのかが分かっていません。。

大変ですが、コントロール1つずつにchangeイベントを入れて、
(changeイベントは文字が一つ入力されるごとに実行されると聞いたことがあったので、文章を全部入力し終えてから処理、というのは無理でしょうか?)
それらを1つのクラスモジュール(例3)に導くような
処理が、やはり理想でしょうか?

【60508】Re:テキストボックスとコンボボックスに...
発言  neptune  - 09/2/25(水) 12:44 -

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


>ちょっと難しそうですが、どのような仕組みで動くのか確認してみます。
仕組みを理解してください。


>大変ですが、コントロール1つずつにchangeイベントを入れて、
>(changeイベントは文字が一つ入力されるごとに実行されると聞いたことがあったので、文章を全部入力し終えてから処理、というのは無理でしょうか?)
>それらを1つのクラスモジュール(例3)に導くような
>処理が、やはり理想でしょうか?
changeイベントで入力データの確認ってのは、鬱陶しいし、その処理も何かと
問題発生の元になりやすいので普通やらんと思います。

例えば、
・データ処理のためのコマンドボタンを用意しておき、
・そのボタンをクリックしたときに、データの正当性をチェックする
のが簡単確実で、多く用いられると思います。

ちなみに、クラス内ではTextBoxのExitイベントは取得できなかったと思います。
(確認してませんけど。)

【60530】Re:テキストボックスとコンボボックスに...
発言  neptune  - 09/2/25(水) 22:34 -

引用なし
パスワード
   追記しておきます。

>
>>ちょっと難しそうですが、どのような仕組みで動くのか確認してみます。
>仕組みを理解してください。
>
>
>>大変ですが、コントロール1つずつにchangeイベントを入れて、
>>(changeイベントは文字が一つ入力されるごとに実行されると聞いたことがあったので、文章を全部入力し終えてから処理、というのは無理でしょうか?)
>>それらを1つのクラスモジュール(例3)に導くような
>>処理が、やはり理想でしょうか?
>changeイベントで入力データの確認ってのは、鬱陶しいし、その処理も何かと
>問題発生の元になりやすいので普通やらんと思います。
↑「普通やらん」を「出来るだけやらん」に訂正しておきます。

追記分:コントロールが沢山あって、データの正当性のチェックもいろいろ
あるでしょうから、別にクラスに固執するわけではありませんので、
誤解の無いようにお願いします。
理解不十分で作成すると後で自分が困りますから。
従って、一番良いのは自分の判りやすい方法で必要な動作と結果が得られるなら
それでやる事です。重い処理は別として、メモリや処理速度なんか最近のPCなら
殆ど気にする必要も無いですし。

但し、ある程度スキルがあがるとやはり、メンテナンスのしやすい方法を
取りたくなります。先のサンプルの仕組みを理解すると、1つ目の親クラス
に、例えば、全てのTextBoxのデータを検証するメソッドを書いておくと
判りやすくなるのは大きなメリットです。

【60534】Re:テキストボックスとコンボボックスに...
お礼  KK  - 09/2/26(木) 10:59 -

引用なし
パスワード
   neptuneさん。コメントありがとうございます。


>>changeイベントで入力データの確認ってのは、鬱陶しいし、その処理も何かと
>>問題発生の元になりやすいので普通やらんと思います。
>↑「普通やらん」を「出来るだけやらん」に訂正しておきます。

はい。
私のほうでも、どのような動きになるのかいろいろ確認しましたが、
アドバイスいただいたようにちょっと扱いにくかったです。

それが確認できただけでも収穫でした。
(まだコントロールを扱いだして日が浅いので勉強になりました)


>追記分:コントロールが沢山あって、データの正当性のチェックもいろいろ
>あるでしょうから、別にクラスに固執するわけではありませんので、
>誤解の無いようにお願いします。
>理解不十分で作成すると後で自分が困りますから。
>従って、一番良いのは自分の判りやすい方法で必要な動作と結果が得られるなら
>それでやる事です。重い処理は別として、メモリや処理速度なんか最近のPCなら
>殆ど気にする必要も無いですし。
>
>但し、ある程度スキルがあがるとやはり、メンテナンスのしやすい方法を
>取りたくなります。先のサンプルの仕組みを理解すると、1つ目の親クラス
>に、例えば、全てのTextBoxのデータを検証するメソッドを書いておくと
>判りやすくなるのは大きなメリットです。

はい。
確かにおっしゃるとおりだと思います。


先日教えていただいたサンプルの動きをベースにアレンジし、
先ほどなんとか目標としていた処理が動くところまで確認できました。


大変参考になりました。
ご教授いただき、ありがとうございました。

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