• ベストアンサー

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

G6030のカラーインクが出ない
このQ&Aのポイント
  • G6030のカラーインクが出ません。取扱説明書に記載されている工程を試しましたが直りませんでした。
  • 取扱説明書にはプリントヘッドを交換すれば修正できると書かれていますが、本当にそれで解決するのか心配です。
  • プリントヘッドを取り寄せて交換すれば直るならば、どこでプリントヘッドを購入すればいいのか教えてください。
回答を見る

専門家に質問してみよう