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

解決済みの質問

エクセル VBA リストボックスの登録方法

早速の質問ですが

エクセルVBAでリストボックスでシートのセルからリストボックスの中身を作りたいのですがそれだけなら

ListBox1.RowSource = Range("E21", Range("E65536").End(xlUp)).Address
こんな感じで出来ますよね・・・
ただ自分が作りたいのは、条件が付いてE21のセルはF21のセルに○が付いていたらリストボックスに出す 
E22のセルはF22のセルに○が付いていたらリストボックスに出す
というのを作りたいのです。
その条件で E65536をxlUPでやりたいのですが色々考えたのですが
いいアイデアが浮かびません
どうか皆様ご協力の程宜しくお願いいたします。

投稿日時 - 2009-03-10 18:16:27

QNo.4785219

困ってます

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

ユーザーフォームのリストボックスでの例です。
コントロールツールボックスのリストボックスの場合は
適切なイベントでお試し下さい。

Private Sub UserForm_Initialize()
Dim r As Range
Dim c As Range
With Worksheets("Sheet1")
Set r = .Range(.Range("E1"), .Range("E" & Cells.Rows.Count).End(xlUp))
For Each c In r
If c.Offset(, 1).Value = "○" Then Me.ListBox1.AddItem c.Value
Next c
End With
End Sub

投稿日時 - 2009-03-10 19:25:27

お礼

ん~なるほど・・・ なかなか難しそうですね・・・
これを参考にもうちょっとがんばってみます。

投稿日時 - 2009-03-11 09:08:03

ANo.2

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

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

回答(4)

ANo.4

連続したセル範囲は、
Me.ListBox1.List = Worksheets(1).Range(Worksheets(1).Range("A1"), Worksheets(1).Range("A" & Cells.Rows.Count).End(xlUp)).Value

というように設定できますが、オートフィルタで抽出した飛び飛びのセル範囲は可視セルのみをジャンプで選択しても
ダメなようです。
抽出後のセルをループでリストボックスに格納、なら可能だと思います。

投稿日時 - 2009-03-10 19:59:18

お礼

何度もお返事ありがとうございます。
2番目のやり方を参考にさせていただいて 作ってみましたらばっちり動きました。
自分の実力ですと内容が判らない部分もありますがまた勉強して
がんばりたいと思います。
ありがとうございました。

投稿日時 - 2009-03-11 09:14:55

ANo.3

私自身オートフィルタをほとんど使わないので未検証ですが、
オートフィルタでセル抽出してから一括転記、というのも
出来るかもしれません。

投稿日時 - 2009-03-10 19:29:25

ANo.1

セル範囲をループし、If関数で条件分岐して条件に合致したら
Additemで追加、としてはいかがでしょう?

投稿日時 - 2009-03-10 18:26:10

あなたにオススメの質問