こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

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

マクロ初心者です。
教えてください。

コンボボックスで、[▼]をクリックすると、
[りんご]、[いちご]、[みかん]のリストが表示されます。
しかし、もう一度、[▼]をクリックするとリストの数が増えています。
[りんご]、[いちご]、[みかん]、[りんご]、[いちご]、[みかん]、[りんご]、[いちご]、[みかん]

全くの初心者なので、どうすればいいかわかりません。

コンボボックスで、[▼]をクリックすると、
[りんご]、[いちご]、[みかん]のリストのみが常に表示されるようにしたいです。

下記がコードです。

----------------------------------------
Private Sub 種類_Combo_DropButtonClick()
'** データセット
種類_Combo.AddItem "りんご"
種類_Combo.AddItem "いちご"
種類_Combo.AddItem "みかん"
End Sub

----------------------------------------

よろしくお願いします。

投稿日時 - 2006-06-08 18:08:43

QNo.2203413

困ってます

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

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

投稿日時 - 2006-06-08 23:19:50

お礼

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

投稿日時 - 2006-06-12 15:17:29

このQ&Aは役に立ちましたか?

1人が「このQ&Aが役に立った」と投票しています

回答(4)

ANo.4

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

投稿日時 - 2006-06-09 22:59:16

ANo.2

こんな感じにしてみては?

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

投稿日時 - 2006-06-08 18:37:00

ANo.1

「additem」というのは「追加しなさいよ~」という命令なので、
プログラムを日本語に置き換えて言いますと・・・

「種類」というコンボボックスを押したら、「種類」コンボボックスのリストに
「りんご」「いちご」「みかん」を追加しなさいよ~。ということです。

「Combo_DropButtonClick」という命令が良くないのかもしれませんので、
コマンドボタンを押したときにその命令を与えてやって、「Combo_DropButtonClick」
は削除してはいかがでしょうか?

投稿日時 - 2006-06-08 18:27:55

あなたにオススメの質問