過去ログ

                                Page      76
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
   通常モードに戻る  ┃  INDEX  ┃  ≪前へ  │  次へ≫   
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
 ▼多数のコンボボックスの自動dropdown設定について。  教育関係者 02/10/23(水) 17:24
   ┣Re:多数のコンボボックスの自動dropdown設定について。  イケガミ 02/10/23(水) 17:35
   ┃  ┗Re:多数のコンボボックスの自動dropdown設定について。  yu-ji 02/10/24(木) 10:21
   ┃     ┗Re:多数のコンボボックスの自動dropdown設定について。  教育関係者 02/10/24(木) 11:05
   ┗Re:多数のコンボボックスの自動dropdown設定について。  YU-TANG 02/10/24(木) 20:45
      ┗Re:多数のコンボボックスの自動dropdown設定について。  教育関係者 02/10/25(金) 9:43

 ───────────────────────────────────────
 ■題名 : 多数のコンボボックスの自動dropdown設定について。
 ■名前 : 教育関係者
 ■日付 : 02/10/23(水) 17:24
 -------------------------------------------------------------------------
   失礼いたします。

コンボボックスの自動dropdownの設定について
どなたかおわかりになられます方、
ご教授いただきたいのですが・・・・。

現在の状況としましては
"科目成績"、"評価成績"を扱う90個のコンボボックスと
"単位成績"を扱う90個のテキストボックスがございまして
**************************************************
For i = 1 To 90
  kamoku(i) = Me.Controls("科目成績" & i).Value
  tanni(i) = Me.Controls("単位成績" & i).Value
  hyouka(i) = Me.Controls("評価成績" & i).Value
Next i
**************************************************
という先日ご教授いただきました記述で変数への格納を行っております。


私の希望としましては、
コンボボックスにフォーカスがあたったときに
自動的にリストがdropdown表示されるように設定したいのですが、

過去のV3質問箱 NO.906の記録の中に
**************************************************
Private Sub コンボ0_GotFocus()
  コンボ0.Dropdown
End Sub
**************************************************
で私の希望します設定が可能と理解したのですが・・・。

質問といたしましては

Q1、
90個+90個=180個のコンボボックスをひとつひとつに
**************************************************
Private Sub コンボ0_GotFocus()
  コンボ0.Dropdown
End Sub
**************************************************
といった記述をしていくしか方法はないのでしょうか?

for〜nextを使って
まとめて設定することはできないのでしょうか?

あぶなっかしく、思いつく記述をしてみたのですが
うまくいきませんでした。

おわかりになられます方
ご教授よろしくお願い申し上げます。

 ───────────────────────────────────────  ■題名 : Re:多数のコンボボックスの自動dropdown設定について。  ■名前 : イケガミ <ikegami_kumamoto@dosule.com>  ■日付 : 02/10/23(水) 17:35  -------------------------------------------------------------------------
   >Q1、
>90個+90個=180個のコンボボックスをひとつひとつに
>**************************************************
>Private Sub コンボ0_GotFocus()
>  コンボ0.Dropdown
>End Sub
>**************************************************
>といった記述をしていくしか方法はないのでしょうか?

できないような気がします。

通常、複数コントロールのプロパティを設定することはできると
思いますが、各コントロールのイベントプロシージャの内容を
VBAで設定するのは。。。

#他の方の回答もお待ちください。

 ───────────────────────────────────────  ■題名 : Re:多数のコンボボックスの自動dropdown設定について。  ■名前 : yu-ji  ■日付 : 02/10/24(木) 10:21  -------------------------------------------------------------------------
   ▼イケガミ さん:

>>90個+90個=180個のコンボボックスをひとつひとつに
>>**************************************************
>>Private Sub コンボ0_GotFocus()
>>  コンボ0.Dropdown
>>End Sub
>>**************************************************
>>といった記述をしていくしか方法はないのでしょうか?

>通常、複数コントロールのプロパティを設定することはできると
>思いますが、各コントロールのイベントプロシージャの内容を
>VBAで設定するのは。。。

自分も、VBAでイベントプロシージャにVBAを記述する方法は知らないです。

#というか、これが出来たら、悪用されるのではと思うのですが(^^;
#あ、でもExcelのウィルスに、そんなこと(自動的にコードを埋める)なんて
#ことをするやつがいたような気がするので、技術的には可能?

と、それはさて置き、今回のは、180個のコンボボックスにコードを記述するのが
面倒なので、自動的に出来ないかということですよね?

それなら、なんか裏技のような感じですが(笑)


************

まず、手順1:
標準モジュールなんかで、

Function test()
  For cnt = 0 To 180
    Debug.Print "Private Sub コンボ" & cnt; "_GotFocus()"
    Debug.Print "  コンボ" & cnt & ".Dropdown"
    Debug.Print "End Sub"
  Next
End Function

を実行して、イミデイトウィンドウの結果をコピーする。
#ただし、行数に制限があるようなので、一気に180個分は表示できないよう
#なので、幾つかに分けて、手順1、2を実行してください。

手順2:
対象のフォームに、貼り付ける。

手順3:
全てのコンボボックスを選択して、プロパティの「イベント-フォーカス取得後」
に[イベント プロシージャ]を入力する。

*************

試してみたら、出来ました(笑)。

 ───────────────────────────────────────  ■題名 : Re:多数のコンボボックスの自動dropdown設定について。  ■名前 : 教育関係者  ■日付 : 02/10/24(木) 11:05  -------------------------------------------------------------------------
   イケガミ 様 yu-ji 様

ご教授ありがとうございました。
本日、私職場におりませんため、
外から拝見させていただきまして急ぎお礼を書かせていただきました。

明日、職場にて動作確認後
あらためましてお礼とご報告をさせていただきたいと思います。

本当にありがとうございました。

 ───────────────────────────────────────  ■題名 : Re:多数のコンボボックスの自動dropdown設定について。  ■名前 : YU-TANG <yu-tang@my.tramonline.net>  ■日付 : 02/10/24(木) 20:45  -------------------------------------------------------------------------
   > 90個+90個=180個のコンボボックスをひとつひとつに
> **************************************************
> Private Sub コンボ0_GotFocus()
>   コンボ0.Dropdown
> End Sub
> **************************************************
> といった記述をしていくしか方法はないのでしょうか?

次のような Public Function を標準モジュールに作成します。

Public Function ComboDropdown()
  Screen.ActiveControl.Dropdown
End Function

んで、デザインビューで 180 個のコンボボックスを一括選択して、
プロパティシートのフォーカス取得時イベントに

=ComboDropdown()

と書いてもよいでしょう。
所要時間 3 分くらい?
まあ、イベントプロパティへの関数指定は VBE から検索が利かない
などデメリットも有るので、積極的に勧めるわけではありませんが。

他にも CreateEventProc メソッドで VBA からイベントプロシージャ
を作成するとか、Access 2000 以降なら WithEvents でクラス化
しちゃうとか、いろいろ方法はあるので、VBA に慣れてきたら後は
お好みで。

 ───────────────────────────────────────  ■題名 : Re:多数のコンボボックスの自動dropdown設定について。  ■名前 : 教育関係者  ■日付 : 02/10/25(金) 9:43  -------------------------------------------------------------------------
   イケガミ様 yu-ji様 YU-TANG様:

皆様本当にありがとうございました。

YU-TANG様の方法をとらせていただきまして、
おっしゃられましたとおり、
3分で希望動作ができるようになりました。

本当にありがとうございました。
失礼いたします。

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━    通常モードに戻る  ┃  INDEX  ┃  ≪前へ  │  次へ≫    ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━                                 Page 76