• ベストアンサー

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)のようなものを使ってデータが入っている最後の行を調べるのかと思いましたが、どうもうまくいきませんでした。 よろしくお願いします。

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

  • ベストアンサー
  • onlyrom
  • ベストアンサー率59% (228/384)
回答No.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 '------------------------------------------------------- また、リスト範囲の値を直に設定する方法もありますが、 それはも少し慣れてからでいいでしょう。 以上。  

takohasisa
質問者

お礼

できました!ありがとうございます! ComboBox1.RowSource = "Sheet2!A1:A" & LastRow の部分が自分は知らないコードで悪戦苦闘していました。 またよろしくお願いいたします。

その他の回答 (1)

  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.1

無理に(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表示で指定なく、文字列表示指定のようだ。これも経験。

takohasisa
質問者

お礼

できました。 Me.ComboBox1.RowSource = "A1:A" & d というコードを知らなくて自分で色々と試してみましたが どうしてもできませんでした。非常に助かります。 また何かありましたらよろしくお願いいたします。

関連するQ&A

専門家に質問してみよう