- 締切済み
コンボボックスのリスト全てをセルに書き出す
private sub UserForm_Initialize() me.combobox1.list = get_unique_and_visible_list(range("A2:A17")) me.combobox2.list = get_unique_and_visible_list(range("B2:B17")) me.combobox3.list = get_unique_and_visible_list(range("C2:C17")) me.combobox4.list = get_unique_and_visible_list(range("D2:D17")) me.combobox5.list = get_unique_and_visible_list(range("E2:E17")) me.combobox6.list = get_unique_and_visible_list(range("F2:F17")) me.combobox7.list = get_unique_and_visible_list(range("G2:G17")) me.combobox8.list = get_unique_and_visible_list(range("H2:H17")) end sub private function Get_Unique_and_Visible_List(byref Target as range) as variant ’指定のセル範囲から可視セルを抽出し一意のリストを返す dim h as range dim myDic as object set mydic = createobject("Scripting.Dictionary") for each h in target.specialcells(xlcelltypevisible) mydic(h.value) = 1 next get_unique_and_visible_list = mydic.keys end function 上記方法で、コンボボックスのデータを取得しております。 取得したコンボボックスのリストを Sheet5のIVセルなどに書き出そうと思います。 この場合、 For i=1 To me.combobox1!="" step 1 Worksheets("Sheet5").Range("IV" & i)=me.combobox1.List( i, 0) Next こういった方法にすれば書き出せるのでしょうか? もっと簡単に書き出す方法がありそうですが、中々思いつかないので… 何か知恵をお菓子頂けると嬉しいです! よろしくお願い致します。
- みんなの回答 (1)
- 専門家の回答
みんなの回答
- keithin
- ベストアンサー率66% (5278/7941)
「いつ」「どのように」書き出したいのか動作のイメージがご相談で説明されていませんが、たとえば1.「コマンドボタンを押したとき」に動作させたい 2.ご相談で書きかけたマクロを動くようにしたい なら、 private sub CommandButton1_Click() dim i as long for i = 1 to me.combobox1.listcount worksheets("Sheet5").range("IV" & i) = me.combobox1.list(i-1, 0) next i end sub のようにする事もできます。 >もっと簡単 上述のマクロでも十分ですが、まぁ敢えて単純にするなら worksheets("Sheet5").range("IV1:IV") & me.combobox1.listcount).value = me.combobox1.list とかでもいいです。 また前述したように、どのタイミングでどんな動作を行わせたいのかのイメージがイマイチ不明ですが、ふつーに me.combobox1.list = … のようにしているそのタイミングで、get_unique_and_visible_listの返りを直接セルに書き出すような方法でも良いかもしれません。 #以前のご相談の追加質問の際には、教わった回答をネットからコピペしてご相談を書くんじゃなくて、教わったマクロ等を元に「あなたが今実際に動かしているそのマクロ(あるいは関数式でも同じ)」をあなたの今の実際のエクセルからコピーして情報提供するようにしてください。
お礼
回答ありがとうございます。 以前の相談の追加…ではなく、 全く違ったことに利用しております。 色々と説明不足で申し訳ありません。 単純に、Comboboxのリストに入ったデータを どうやって書き出すのが楽かが知りたかったのです。 全部一旦コンボボックスに読み込んだ後、 別のシートに書き込むという作業がしたいのです。 読み込み方やその他、特に関係なく、 コンボボックスに入れたデータ(リスト)は どうやって書き出したら良いのか。の質問でした。 基本的に、コンボボックスからデータを書き出すのは 「選択されたもの」とか、「番号が分かっているもの?」など多いですが、 1~10まで、全て書き出したい場合の (A1から順番に全部書き出したい場合など) 参考資料が見当たらなく、質問させていただきました。 色々と焦っていたので >何か知恵をお菓子頂けると嬉しいです! お菓子ってなってましたね…完全にアホですね(苦笑 色々とご迷惑をお掛けしました!
補足
For文を使い、ListCountを最大値に設定。 そうして、シートに書き出していこうと思います。 ありがとうございました。