プロが教えるわが家の防犯対策術!

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

A 回答 (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
'-------------------------------------------------------

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

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

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

お礼日時:2008/04/24 23:26

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

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

お礼日時:2008/04/24 23:28

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています


このQ&Aを見た人がよく見るQ&A