- ベストアンサー
エクセルVBA(マクロ-コンボボックスについて)
マクロ初心者です。 教えてください。 コンボボックスで、[▼]をクリックすると、 [りんご]、[いちご]、[みかん]のリストが表示されます。 しかし、もう一度、[▼]をクリックするとリストの数が増えています。 [りんご]、[いちご]、[みかん]、[りんご]、[いちご]、[みかん]、[りんご]、[いちご]、[みかん] 全くの初心者なので、どうすればいいかわかりません。 コンボボックスで、[▼]をクリックすると、 [りんご]、[いちご]、[みかん]のリストのみが常に表示されるようにしたいです。 下記がコードです。 ---------------------------------------- Private Sub 種類_Combo_DropButtonClick() '** データセット 種類_Combo.AddItem "りんご" 種類_Combo.AddItem "いちご" 種類_Combo.AddItem "みかん" End Sub ---------------------------------------- よろしくお願いします。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
そのコンボボックスは、VBAのフォームに置かれているのでしょうか? それともシートに直接置かれているのでしょうか? もしフォームに置いているのであれば、フォームの Initializeイベントで、No.2の方のコードを書きます。 で、コンボボックスのDropButtonClickイベントは消します。 Initializeの時点ではClearはいらなくて質問者様のコードのままでもいいと思いますが、私なら書きますね。 Private Sub UserForm_Initialize() '** データセット 種類_Combo.Clear '← この行を追加するだけ 種類_Combo.AddItem "りんご" 種類_Combo.AddItem "いちご" 種類_Combo.AddItem "みかん" End Sub シートに直接貼り付けた場合は・・・。 どのタイミングでやればいいんでしょうね。 WorkBookのOpenイベント?かな?その場合は分からないです。 Auto_Openかなぁ。うぅ~ん。
その他の回答 (3)
- imogasi
- ベストアンサー率27% (4737/17069)
AddItemは今あるコンボの項目のリストの後に項目を追加する(Add)ものです。 だから、Clickイベントの中に入れると、クリックするごとに累積されていきます。 始まって以来1回かぎりしか実行されないルーチンの、今後の項目選択が始まるまでのルーチンに入れないとなりません。 UserForm_Initializeルーチンなどが良いでしょう。
- crossgate
- ベストアンサー率65% (78/119)
こんな感じにしてみては? --- Private Sub 種類_Combo_DropButtonClick() '** データセット 種類_Combo.Clear '← この行を追加するだけ 種類_Combo.AddItem "りんご" 種類_Combo.AddItem "いちご" 種類_Combo.AddItem "みかん" End Sub
- mars180sx
- ベストアンサー率31% (37/119)
「additem」というのは「追加しなさいよ~」という命令なので、 プログラムを日本語に置き換えて言いますと・・・ 「種類」というコンボボックスを押したら、「種類」コンボボックスのリストに 「りんご」「いちご」「みかん」を追加しなさいよ~。ということです。 「Combo_DropButtonClick」という命令が良くないのかもしれませんので、 コマンドボタンを押したときにその命令を与えてやって、「Combo_DropButtonClick」 は削除してはいかがでしょうか?
お礼
ありがとうございました。 ↑のコードに修正したら、できました~。