• 締切済み

コンボボックスのリスト全てをセルに書き出す

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 こういった方法にすれば書き出せるのでしょうか? もっと簡単に書き出す方法がありそうですが、中々思いつかないので… 何か知恵をお菓子頂けると嬉しいです! よろしくお願い致します。

みんなの回答

  • keithin
  • ベストアンサー率66% (5278/7941)
回答No.1

「いつ」「どのように」書き出したいのか動作のイメージがご相談で説明されていませんが、たとえば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の返りを直接セルに書き出すような方法でも良いかもしれません。 #以前のご相談の追加質問の際には、教わった回答をネットからコピペしてご相談を書くんじゃなくて、教わったマクロ等を元に「あなたが今実際に動かしているそのマクロ(あるいは関数式でも同じ)」をあなたの今の実際のエクセルからコピーして情報提供するようにしてください。

satoron666
質問者

お礼

回答ありがとうございます。 以前の相談の追加…ではなく、 全く違ったことに利用しております。 色々と説明不足で申し訳ありません。 単純に、Comboboxのリストに入ったデータを どうやって書き出すのが楽かが知りたかったのです。 全部一旦コンボボックスに読み込んだ後、 別のシートに書き込むという作業がしたいのです。 読み込み方やその他、特に関係なく、 コンボボックスに入れたデータ(リスト)は どうやって書き出したら良いのか。の質問でした。 基本的に、コンボボックスからデータを書き出すのは 「選択されたもの」とか、「番号が分かっているもの?」など多いですが、 1~10まで、全て書き出したい場合の (A1から順番に全部書き出したい場合など) 参考資料が見当たらなく、質問させていただきました。 色々と焦っていたので >何か知恵をお菓子頂けると嬉しいです! お菓子ってなってましたね…完全にアホですね(苦笑 色々とご迷惑をお掛けしました!

satoron666
質問者

補足

For文を使い、ListCountを最大値に設定。 そうして、シートに書き出していこうと思います。 ありがとうございました。

関連するQ&A