Excel VBA質問箱 IV

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

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


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

【36294】発生イベント集約 ともた 06/3/27(月) 16:57 質問[未読]
【36296】Re:発生イベント集約 neptune 06/3/27(月) 17:20 発言[未読]
【36297】Re:発生イベント集約 ともた 06/3/27(月) 17:55 発言[未読]
【36305】Re:発生イベント集約 neptune 06/3/27(月) 21:15 回答[未読]
【36306】Re:発生イベント集約 ichinose 06/3/28(火) 8:10 発言[未読]
【36312】Re:発生イベント集約 ともた 06/3/28(火) 9:42 お礼[未読]

【36294】発生イベント集約
質問  ともた  - 06/3/27(月) 16:57 -

引用なし
パスワード
   本日2件目お世話になります。

<<要件>>
シートA上に動的に作成されるコンボボックスがあります。
このコンボボックス内に設定されている値を選択した際に
セルAにコンボ内の値をセットさせたい

<<現状>>
1.クラスモジュール
Public WithEvents DynamicComboBox As ComboBox
----------------------------------------------
Private Sub DynamicComboBox_Change()
 MsgBox "Change = " & DynamicComboBox.Name
 
 ' 選んだのは何番目か?
 Select Case DynamicComboBox.ListIndex
  ' 空白行選択時
  Case 0
   Range("P25").Value = 0
   Range("P26").Value = 0
  ' 1/2ラック  60A 100V/30A × 2
  Case 1
   Range("P25").Value = DynamicComboBox.List(1, 0)
   Range("P26").Value = DynamicComboBox.List(1, 1)
  ' 1/2ラック 120A 100V/30A × 4
  Case 2
   Range("P25").Value = DynamicComboBox.List(2, 0)
   Range("P26").Value = DynamicComboBox.List(2, 1)
  ' 1/2ラック その他
  Case 3
   Range("P25").Value = DynamicComboBox.List(3, 0)
   Range("P26").Value = DynamicComboBox.List(3, 1)
  ' 1ラック    60A 100V/30A × 2
  Case 4
   Range("P25").Value = DynamicComboBox.List(4, 0)
   Range("P26").Value = DynamicComboBox.List(4, 1)
  ' 1ラック   120A 100V/30A × 4
  Case 5
   Range("P25").Value = DynamicComboBox.List(5, 0)
   Range("P26").Value = DynamicComboBox.List(5, 1)
  ' 1ラック その他
  Case 6
   Range("P25").Value = DynamicComboBox.List(6, 0)
   Range("P26").Value = DynamicComboBox.List(6, 1)

 End Select
End Sub

以上にて、シート上のコンボを選択してもイベントが発生しません。。。。
他に何か不足しておりますでしょうか?
初歩的な質問で申し訳ございませんが
ご教示いただければと思います。

【36296】Re:発生イベント集約
発言  neptune  - 06/3/27(月) 17:20 -

引用なし
パスワード
   とりあえず、気付いた部分ですが、
>As ComboBox
はMSForms.ComboBox (記憶で書いているのでMSFormsの部分は確認してください。)
のはずですが?

UPされている部分より、DynamicComboBox にどうやってその動的コンボボックスを
割り当てているかの方も、重要な要素だったと思います。

そちら側のソースのUPが必要かと思います。
その方が解答がつきやすいでしょう。

【36297】Re:発生イベント集約
発言  ともた  - 06/3/27(月) 17:55 -

引用なし
パスワード
   neptune さん

お世話になりますm(_ _)m

>UPされている部分より、DynamicComboBox にどうやってその動的コンボボックスを
>割り当てているかの方も、重要な要素だったと思います。

この部分について何を意味しているかが理解できないです。。。
WorkSheet側のソースで、どのように割り当てたらよいのでしょうか?

お粗末ながらクラスモジュールのみ作成しておりました。

【36305】Re:発生イベント集約
回答  neptune  - 06/3/27(月) 21:15 -

引用なし
パスワード
   >シートA上に動的に作成されるコンボボックスがあります。
は出来ていますか?
>以上にて、シート上のコンボを選択してもイベントが発生しません。。。。
関連付けは全くしてないのですか?

・コンボボックスを作る
・クラスのDynamicComboBoxにコンボボックスを設定する。
という流れになりますがどこまで出来ているんですか?

>お粗末ながらクラスモジュールのみ作成しておりました。
これはありえないと思いますが。
クラスモジュールだけではただの入れ物の用意だけですから。

何が出来ているか、何が出来てないか、どうやって、どのようにできないのかが、
全くわからないのでResの付け様がありません。

>Public WithEvents DynamicComboBox As ComboBox
の意味を理解してますか?
全くわかりませんというのはなしね。そういうレベルの人が使う手法では
ありませんから。

【36306】Re:発生イベント集約
発言  ichinose  - 06/3/28(火) 8:10 -

引用なし
パスワード
   おはようございます。


><<要件>>
>シートA上に動的に作成されるコンボボックスがあります。
>このコンボボックス内に設定されている値を選択した際に
>セルAにコンボ内の値をセットさせたい

クラスモジュールやWitheventsの使用方法を習得することは
大事なことですから、その例としてのコードは
ここの過去ログで「クラス」とか「WithEvents」等をキーワードに
検索してみてください。沢山あると思います。

問題は、「シートA上に動的に作成されるコンボボックス」です。
コマンドバー「コントロールツールボックス」内のコントロールの
動的な作成にはいくつか問題があります。
大きな問題として、モジュールレベルの変数がコントロール作成時に
初期化されてしまうことです。

http://www.vbalab.net/vbaqa/c-board.cgi?cmd=one;no=7011;id=excel

Witheventsを使用する変数はどうしてもモジュールレベルの変数ですよね?
これが初期化されてしまうとイベントは発生しませんからねえ・・・。


コンボボックス動的作成の場合は、仕様によっては
コマンドバー「フォーム」のコンボボックスが代替できないか
検討してみてください。

又は、予め必要なコントロール(コマンドバー「コントロールツールボックス」内の
コントロール)を用意しておいて非表示にしておき必要に応じて表示する方法等も
考慮してください。

ということで再度 仕様を見直してみてください。

【36312】Re:発生イベント集約
お礼  ともた  - 06/3/28(火) 9:42 -

引用なし
パスワード
   ichinose さん&neptuneさん

おはようございます。


お二人からのレスを踏まえ、再度仕様検討を行ってまいりたく思います。
そして今後は、質問内容のレベルをあげてまいりたく思います。
ご助言深謝いたします。

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