- ベストアンサー
Excel2010 シート上のコンボボックスの表示に関する問題
- Excel2010を使用している際に、シート上に設置したコンボボックスが正しく表示されない問題が発生しています。
- コンボボックスのドロップボタンをクリックしても、リストからの選択結果が表示されない現象が発生しています。
- 提供されたコードを確認したところ、コンボボックスの表示に関する設定が欠けていたため、正常に動作しなかったことが判明しました。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
VBAのヘルプでDropButtonClickイベントについて確認してみると --- 選択項目のリストをドロップダウンで表示するか、または非表示にすると発生します。 --- のように,動作の説明が書かれています。 つまりドロップダウンから選択してリストを「閉じたとき」にも再度イベントが発生し,何を選んだのかを含めてclearしてしまっているのが直接の原因です。 1から100までの選択肢の設定,つまり初期化動作を何か別の手段で行う(たとえばWorkbookのOpenイベント,たとえばワークシートのセルに記載しておいてRowSourceとして設定しておく)のが適当と思いますが,敢えて今の仕込みで工夫してみるなら Private Sub ComboBox1_DropButtonClick() Dim i As Long With Worksheets("シート操作").OLEObjects("ComboBox1").Object if .listcount > 0 then exit sub For i = 1 To 100 .AddItem i Next i End With End Sub などのような風でも出来ます。
その他の回答 (1)
- imogasi
- ベストアンサー率27% (4737/17069)
2002だが 表示ーツールバーーコントロールツールボックスーコンボボックス、を選ぶ。 標準モジュールに Sub test01() With Worksheets("Sheet1").OLEObjects("ComboBox1").Object For i = 1 To 5 .AddItem i Next i End With End Sub を入れて実行。 これでコンボのアイテムで1-5が出ました。 これを参考に2010の場合をチェックしたら。 ーー ・数字を選らばせるのに、100個もあるのに、コンボを使うというのはおかしいのではないですか。100に近い数字を選ぶのが大変でしょう。テキストボックスで良いのでは。 ・アイテムの設定にイベントを使うのもあまりやらないのでは。 ・またエクセルVBAでコンボを使いアイテムを使うのは、プロパティでListFillRangeを使ってセルにある文字列や数をアイテムを使うのがエクセルの既定路線です。
お礼
ご回答ありがとうございます。 実は、もう一つテキストボックスを設置しており、入力して検索させております。 (テキストボックスは顧客名での検索) できるだけマウスだけの操作で事が運べるように努力しておりまして、顧客番号が わかるお客様は、マウスだけで番号検索できるようにしたかったのです。 No1の回答の方もおっしゃるように今後既定路線で少しづつ組みなおしていこうかと思います。 ありがとうございました。
お礼
お礼が遅くなり申し訳ありません。 上記コードで希望通り動作しました。 ワークシート上のコントロールの設定が今一つ勉強不足でした。 上記コードプラスワークブックのOPENイベントで値をクリアする 方法でとりあえずは対処しました。 100ある選択肢でもやはりRowSourceとしてセルに設定したほうがいいのですか? 「プログラムだけで対処できたほうがスマートかな」 と思っておりました。(RowSourceの設定方法が1~100を入力する方法しか知らないもので・・・) 今は時間がないので、今後おっしゃるような方法を勉強したいと思います。 大変ありがとうございました。