- ベストアンサー
VBA コンボボックス項目追加?
エクセル VBA コンボボックスの項目入荷についてですが 入力フォームを開いたときに Private Sub UserForm_Activate() ComboBox1.AddItem ("本社") ComboBox1.AddItem ("東京支社") ComboBox1.AddItem ("大阪支社") End sub のようにコンボボックスに項目をだすことはわかったのですが、 フォームをを開いたときにワークシートを全てを自動で 項目に表示する方法はありますでしょうか? 宜しくお願いいたします。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
ご質問の意味が何とおりかに取れますが、全シート名を追加したい というのであれば以下のコードをお試し下さい。 Private Sub UserForm_Activate() ComboBox1.Clear Dim shIdx As Integer For shIdx = 1 To ActiveWorkbook.Sheets.Count ComboBox1.AddItem ActiveWorkbook.Sheets(shIdx).Name, shIdx - 1 Next ComboBox1.ListIndex = 0 End Sub
その他の回答 (2)
- imogasi
- ベストアンサー率27% (4737/17070)
>ワークシートを全てを自動で (1)これを素直に読むと、ある1つ(と思うが)のシートの Range(A!:X100)などのセル範囲(これだってシートの1部だが)を コンボボックスに表示すると、受け取れる。 コンボの行数列数制限内では可能です。 しかし普通はこんなことはしないでしょう。 しかし複数セル(2,3列、数百行以内か。独断で)の情報をアイテムに加えることは、プログラムで繰り返しを使うから数行で可能です。 (2)既出回答のシート名のことなら、質問が致命的に不備です。早く補足で訂正のこと。 ーーー もっと全体的に何をしたいか書いて、質問したほうが良い。 コンボの利用という点さえ、別にこれを使わない方法があるかもしれない。 ーー 質問者の力量は不明だが、過去質問の例で、自分が最近習得した機能に飛びついて、初心者はそれを使って、何でもやろうとする傾向が見られる。機能には使う場面で、適不適があるものが多い。 その時点では、それしか出来ないから仕方ないのだが。 折角数万の読者に読んでもらう良い機会なのだから、スマートな・適当なやり方は無いか聞くのが得策と思う。
お礼
質問内容の不備にてお手数をかけてすみません。 既出回答のシート名のことです。 質問方法にも色々ありますのでセンスよく出来るように がんばります。
- marbin
- ベストアンサー率27% (636/2290)
ワークシート名の一覧ということでしょうか? 特定のシートの内容を全てということでしょうか?
お礼
質問があいまいな内容ですみません。 適切な内容の質問ができるようがんばります。
お礼
説明が不十分ですみません。 上記のコードでやろうとしていたことが出来ました。 スキルの問題もありますが次回よりもう少し 適切な内容の質問方法ができるようがんばります。