Excel VBAでコンボボックスのリストを取得して表示する方法

このQ&Aのポイント
  • Excel VBAを使用して、コンボボックスのリストを取得し、Msgboxに表示する方法について説明します。
  • オートフィルターを再現するために、コンボボックスに表示されていない項目でフィルタリングを行いたい場合、コンボボックスの個数を取得してその数をMsgboxに表示することで実現できます。
  • 配列のインデックスは0から始まるため、Comboboxの個数を表示する場合はListCount-1とすることが正しいです。また、Forループを使用して順番に表示する方法もあります。
回答を見る
  • ベストアンサー

コンボボックスのリストを取得し、Msgboxに出力

お世話になっております。 オートフィルターをフォーム上で再現しております。Excelは2003です。 そこで、オートフィルターのように、項目を表示しすることはできました。 その後、選択されていない項目でフィルターをかけていきたいと思っています。 コンボボックスに入っている個数を数えて、 1つずつ使用していこうと考えています。 例えば、Combobox1には "あ" "い" "う" "え" "お" "" と入っているとします。(最後は空白をわざとです。) その場合、コンボボックスの個数を取得し 個数-1 でMsgboxに表示させていきたいと思っております。 (あ、い、う、え、お)と表示できればOKです。 この場合、ListCount-1 で良いのでしょうか? 配列に入るのは0からだという認識があるのですが、 Comboboxがそうだったか、うろ覚えでして… For i=0 to Combobox1.ListCount-1   Msgbox Combobox1.ListCount-1 Next これでMsgboxに表示できるのでしょうか? また、他に良いコードがあれば教えて下さい。 よろしくお願い致します!

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

  • ベストアンサー
  • nishi6
  • ベストアンサー率67% (869/1280)
回答No.1

>これでMsgboxに表示できるのでしょうか?   MsgBox ComboBox1.List(i) とします。 >また、他に良いコードがあれば教えて下さい。 特にありません。これでいいと思います。

satoron666
質問者

お礼

回答ありがとうございます。 あ、iを設定したのに使うのを忘れてました! List(i)で表示できるのですね^^ ありがとうございました!

関連するQ&A

  • コンボボックスの初期表示について

    コンボボックスの初期表示についてですが、 試験できる環境がないため、以下の認識で正しいか教えてください。 コンボボックス1行目を表示 ComboBox1.SelectedIndex = 0 コンボボックス2行目を表示 ComboBox1.SelectedIndex = 1 空白を表示 ComboBox1.SelectedIndex = null or "" 文字を表示 ComboBox1.SelectedIndex = "表示"

  • コンボボックスのリスト内容表示の仕方

    エクセル マクロ VBA の質問です。ユーザーフォーム(UserForm1)にあるコンボボックス(ComboBox1)にリストを表示したいのですが。 全部という項目と(これはできてます) エクセルのシートA4からA列の空白行までの値を項目として表示したいのですが、いまいちうまくいきません。 教えていただけると助かります。

  • VisualBasic2010のコンボボックス

    VisualBasic2010のコンボボックスに関して質問です。 With ComboBox1   .Items.add("項目1")   .Items.add("項目2") End With のように、自身で項目を追加するのではなく、 ユーザのフォルダ配置情報を取得してコンボボックスに表示させるには、 どのようにすればよろしいでしょうか。 イメージとしては、WindowsXPで画像等を保存する場合にでる保存ダイアログ。 あれのコンボボックスのような感じです。

  • DBカラムをコンボボックスに設定する方法

    VB初心者ですみませんが、どなたか教えてください。 以下のようにADOにてDBのカラムからデータを取得し、コンボボックスに設定をしたいのですが、よくわかりません。 コンボボックスのはじめに空白→DBの項目を設定→最後に”なし”を設定したいのですが、教えてください。 Dim adors As New ADODB.Recordset adors.Open "SELECT A_FIELD FROM TABLE",・・・・ If adors.RecordCount <> 0 Then ComboBOX.AddItem ("") 'コンボボックスのはじめに空白を設定 Set ComboBOX.RowSource = adors ComboBOX.MatchEntry = dblExtendedMatching ComboBOX.ListField = "A_FIELD" ComboBOX.AddItem ("なし") 'コンボボックスの終わりにに’なし’を設定 End If

  • コンボボックスの開いたリストを閉じるには

    コンボボックスのリストを開くのはComboBox1.DropDownでできますが、閉じるのはどういう風にやればいいでしょうか。 今ユーザーフォームで Private Sub Combobox1_Change() ComboBox1.Clear v = ComboBox1.Text For i = 1 To 300 c = Worksheets("Sheet1").Cells(i, "A") If v = Left(c, Len(v)) And Len(v) > 0 Then ComboBox1.AddItem c End If Next i ComboBox1.DropDown End Sub と言う風にしていますが、リストを開きっぱなしだと変な表示になってしまい、マウスクリックで一旦閉じてから開かないと変な表示になってしまうのです。 そこで一旦リストをマクロで閉じさせてから再び開きたいのですが、どうすればいいでしょうか。

  • コンボボックスに別のシート上のリストを出したいのですが?

    コンボボックスに別のシート上のリストを出したいのですがうまくいきません。以下の場合だとうまくいくのですが、シート名を変えたいのです。 sheet1のままだと以下の記述でうまくいくのですが ComboBox1.RowSource = "sheet2!b1:b31" sheet1から名前を項目に、つまりsheet項目にすると下の記述ではうまくいきません。 ComboBox1.RowSource = "sheet項目!b1:b31" もちろん基本となるシート名は”項目”に変えてあります。どこがいけないのでしょうか? いろいろやってみたのですがだめです。どなたか教えてください。

  • VBA コンボボックス項目追加?

    エクセル VBA コンボボックスの項目入荷についてですが 入力フォームを開いたときに Private Sub UserForm_Activate() ComboBox1.AddItem ("本社") ComboBox1.AddItem ("東京支社") ComboBox1.AddItem ("大阪支社") End sub のようにコンボボックスに項目をだすことはわかったのですが、 フォームをを開いたときにワークシートを全てを自動で 項目に表示する方法はありますでしょうか? 宜しくお願いいたします。

  • コンボボックスについて

    コンボボックスでドロップダウンメニューが押された場合の処理は Private Sub ComboBox1_DropButtonClick() 処理 End Sub リスト項目がクリックされた時は Private Sub ComboBox1_Click() 処理 End Sub 上記の関数を組み合わせるにはどうすればよいでしょうか?用はComboBoxのドロップダウンメニューが押されて さらにリストの項目が選択してクリックした時はなんらかの処理を行うようにしたいのですがうまくいきません。よろしくお願い致します。

  • テキストボックスのデフォルト設定とコンボボックスの更新について

    テキストボックスのデフォルト設定とコンボボックスの更新について エクセルのVBAで、ユーザーフォームを使用しています。 ユーザーフォームの中にはコンボボックスとテキストボックスとボタンがあります。 コンボボックスには「ABCDEFGHIJKLM」と合計13のリストがあります。 ユーザーフォーム起動時に、コンボボックスには最初のリスト(A)が表示 されていて、「次へ」ボタンと「戻る」ボタンの2つを用意しています。 (1)ユーザーフォーム起動時にテキストボックスに「0」を入れる方法を教えていただけないでしょうか。 コンボボックスで「A」が選択された状態で「次へ」ボタンをおしたら「B」が選ばれる。 「D」が選択された状態で「次へ」ボタンをおしたら「E」が選ばれる。 「M」が選択された状態で「次へ」ボタンをおしたら「A」が選択される。(リストの最初に戻る。) というのは、次のVBAで上手くいきました。 If Combobox1.ListIndex < Combobox1.ListCount - 1 Then Combobox1.Text = Combobox1.List(Combobox1.ListIndex + 1) Else Combobox1.Text = Combobox1.List(0) End If (2)しかし「E」が選択された状態で「戻る」ボタンをおしたら「D」が選ばれる。 「G」が選択された状態で「戻る」ボタンをおしたら「F」が選ばれる。 「A」が選択された状態で「戻る」ボタンをおしたら「M」が選ばれる。(リストの最後に戻る。) といった内容のマクロがうまく組めません。 教えていただけると助かります。

  • Excelマクロのコンボボックスについて

    マクロを初めて扱います。 どなたか詳しい方、ご教授ください。 Excelのシート上にActiveXのコンボボックスを作成しました。 そのコンボボックスに「あああ」という項目を追加したのですが、「あああ」項目が一番下に追加されてしまいました。 Me.ComboBox1.AddItem "あああ" どのように書けば、コンボボックスの最上部に追加されるのでしょうか? どうかコードの書き方をお教えいただけませんでしょうか?

専門家に質問してみよう