• ベストアンサー

エクセルVBA(マクロ-コンボボックスについて)

マクロ初心者です。 教えてください。 コンボボックスで、[▼]をクリックすると、 [りんご]、[いちご]、[みかん]のリストが表示されます。 しかし、もう一度、[▼]をクリックするとリストの数が増えています。 [りんご]、[いちご]、[みかん]、[りんご]、[いちご]、[みかん]、[りんご]、[いちご]、[みかん] 全くの初心者なので、どうすればいいかわかりません。 コンボボックスで、[▼]をクリックすると、 [りんご]、[いちご]、[みかん]のリストのみが常に表示されるようにしたいです。 下記がコードです。 ---------------------------------------- Private Sub 種類_Combo_DropButtonClick() '** データセット 種類_Combo.AddItem "りんご" 種類_Combo.AddItem "いちご" 種類_Combo.AddItem "みかん" End Sub ---------------------------------------- よろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.3

そのコンボボックスは、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かなぁ。うぅ~ん。

pikapika-sun
質問者

お礼

ありがとうございました。 ↑のコードに修正したら、できました~。

その他の回答 (3)

  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.4

AddItemは今あるコンボの項目のリストの後に項目を追加する(Add)ものです。 だから、Clickイベントの中に入れると、クリックするごとに累積されていきます。 始まって以来1回かぎりしか実行されないルーチンの、今後の項目選択が始まるまでのルーチンに入れないとなりません。 UserForm_Initializeルーチンなどが良いでしょう。

  • crossgate
  • ベストアンサー率65% (78/119)
回答No.2

こんな感じにしてみては? --- Private Sub 種類_Combo_DropButtonClick() '** データセット 種類_Combo.Clear '← この行を追加するだけ 種類_Combo.AddItem "りんご" 種類_Combo.AddItem "いちご" 種類_Combo.AddItem "みかん" End Sub

  • mars180sx
  • ベストアンサー率31% (37/119)
回答No.1

「additem」というのは「追加しなさいよ~」という命令なので、 プログラムを日本語に置き換えて言いますと・・・ 「種類」というコンボボックスを押したら、「種類」コンボボックスのリストに 「りんご」「いちご」「みかん」を追加しなさいよ~。ということです。 「Combo_DropButtonClick」という命令が良くないのかもしれませんので、 コマンドボタンを押したときにその命令を与えてやって、「Combo_DropButtonClick」 は削除してはいかがでしょうか?