こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

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

投稿日時 - 2008-04-24 20:55:34

QNo.3973406

困ってます

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

>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
'-------------------------------------------------------

また、リスト範囲の値を直に設定する方法もありますが、
それはも少し慣れてからでいいでしょう。
以上。
 

投稿日時 - 2008-04-24 22:27:12

お礼

できました!ありがとうございます!

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

投稿日時 - 2008-04-24 23:26:30

ANo.2

このQ&Aは役に立ちましたか?

1人が「このQ&Aが役に立った」と投票しています

回答(2)

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

投稿日時 - 2008-04-24 21:45:25

お礼

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

投稿日時 - 2008-04-24 23:28:20

あなたにオススメの質問