- ベストアンサー
Excel VBAコンボボックスについて
いつもお世話になります。 現在ExcelのVBAを使用し、データベースより情報を取得しようと考えています。 データベースから情報の取得はできているのですが、 ボックスを開くたびにデータが下に追加されてしまいます。 ミスは理解できるのですが、どのようにすれば何度開いても同じ情報が 表示されるのか分かりません。 ご存知の方がいればご教授ください。 以下 コード Private Sub CbBox_sample_Change() mySQL = "select * from 情報 order by 日付 desc" Set rec = cnn.Execute(mySQL) Do While Not rec.EOF Form_main.CbBox_kaisei.AddItem (rec(2).Value) rec.MoveNext Loop End Sub ・これだとChangeするたびに増えていくんですよね。きっと。 Excel2002+WindowsXP+Oracle
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
現状の Change イベントで対応するなら、AddItem する前に(イベントの入り口で)コンボボックスをクリアすればいいです。 CbBox_keisei.Clear ただしこれは良くない対処法です。 一度で良い処理を何度もやることになります。 ですのでこの手の処理はフォームの初期化処理である Initialize イベントでやるのが良いでしょう。 現在の処理をそのまま Initialize イベント内に移動すればOKです。 もしフォームではなくワークシート上にコンボボックスを作成しているのであれば、ワークブックのオープンイエベント(Workbook_Open)で処理するのが良いかと思います。
その他の回答 (1)
- naganaga_001
- ベストアンサー率71% (172/242)
お世話になります。 >これだとChangeするたびに増えていくんですよね。きっと。 そこまで解っていらっしゃるのでしたら, AddItemするタイミングを変更すればよいのでは。 例えば,Workbook_Openとか。