- ベストアンサー
EXCEL VBAのコンボボックスに取り込むリストについて
すいません、EXCEL VBAのコンボボックスにデータを取り込む方法について教えていただきたいことがあります。 (1)「シート1」のA列にデータが入力されている (2)ユーザーフォームにコンボボックスを設置し、このA列のデータを取り込む。 このときにA列に入っているデータの数だけ取り組むにはどうしたらいいのでしょうか。 シート1 A列 1行 11 2行 21 3行 31 ・ ・ ・ ・ Private Sub UserForm_Initialize() ComboBox1.RowSource = Sheets("シート1").Range("?") End Sub ?の部分がわかりません。End(xlup)のようなものを使ってデータが入っている最後の行を調べるのかと思いましたが、どうもうまくいきませんでした。 よろしくお願いします。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
>ComboBox1.RowSource = Sheets("シート1").Range("?") これでは、”シート1” がアクティブの場合しか上手くいきません。 シート1がアクティブでなくても上手く動作させるためには、シート名も付加すること。 リストが、Sheet2 の A1~任意行までの場合 '------------------------------------------------------ Private Sub UserForm_Initialize() Dim LastRow As Long LastRow = Sheets("Sheet2").Cells(Rows.Count, "A").End(xlUp).Row ComboBox1.RowSource = "Sheet2!A1:A" & LastRow End Sub '------------------------------------------------------- また、リスト範囲の値を直に設定する方法もありますが、 それはも少し慣れてからでいいでしょう。 以上。
その他の回答 (1)
- imogasi
- ベストアンサー率27% (4737/17069)
無理に(Sheet1は平凡なので)Sheet4のA1:A4に x y z d と入れて Private Sub UserForm_Initialize() d = Worksheets("Sheet3").Range("A100").End(xlUp).Row 'sgBox d Me.ComboBox1.RowSource = "A1:A" & d End Sub を作っておくと、 フォームを開くと コンボに x y z d が出ましたよ。 RowSourceはRange表示で指定なく、文字列表示指定のようだ。これも経験。
お礼
できました。 Me.ComboBox1.RowSource = "A1:A" & d というコードを知らなくて自分で色々と試してみましたが どうしてもできませんでした。非常に助かります。 また何かありましたらよろしくお願いいたします。
お礼
できました!ありがとうございます! ComboBox1.RowSource = "Sheet2!A1:A" & LastRow の部分が自分は知らないコードで悪戦苦闘していました。 またよろしくお願いいたします。