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

解決済みの質問

エクセルVBAユーザーフォーム・リストボックスについて

エクセルVBAにてユーザーフォームを作りリストボックスにSheet1、AからEのデータすべてを
表示させることは出来るのですが、E行にデータがある物のみ表示する方法をご存じの方教えて頂けないでしょうか。
入力したソースは下記のとおりです。

Private Sub UserForm_Click()
Dim lastRow As Long
With Worksheets("Sheet1")
lastRow = .Cells(Rows.Count, 5).End(xlUp).Row
End With
With ListBox1
.ColumnCount = 5
.ColumnWidths = "35;25;30;100;25"
.RowSource = "Sheet1!A2:E" & lastRow
.ColumnHeads = True
End With
End Sub

投稿日時 - 2009-05-08 10:44:03

QNo.4940994

困ってます

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

AddItemを使う方法も有るかと思うが、
配列を作って一括でセットする方法がある。
例データ
Sheet1
A2:E7
A列ーB列ーC列ーD列ー E列
a1b1c1d1e1
a2b2c2d2
a3b3c3d3e3
a4b4c4d4
a5b5c5d5e5
a6b6c6d6e6
コード
Private Sub UserForm_Initialize()
Me.Width = 400
Dim lastRow As Long
Dim myarray(100, 5)
lastRow = Worksheets("Sheet1").Cells(Rows.Count, "E").End(xlUp).Row
'---
With Me.ListBox1
.Width = 300
.Height = 70
.ColumnCount = 5
.ColumnWidths = "35;25;30;100;25"
'.RowSource = "Sheet1!A2:E" & lastRow
.ColumnHeads = True
K = 0

For i = 2 To lastRow
If Worksheets("Sheet1").Cells(i, "E") <> "" Then
For j = 0 To 4
myarray(K, j) = Worksheets("Sheet1").Cells(i, j + 1)
Next j
K = K + 1
End If
Next i

ListBox1.List() = myarray
End With
End Sub
ーーーーーー
ユーザーフォームの実行でリストボックスに内容が表示される。

投稿日時 - 2009-05-08 21:54:42

お礼

うまくいきました。
ご回答下さいまして有難う御座いました。

投稿日時 - 2009-05-12 09:19:48

ANo.2

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

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

回答(2)

http://www.eurus.dti.ne.jp/~yoneyama/Excel/vba/vba_userform03.html
のように、
AddItemを使って項目を追加すればよいと思います。
セルの値が空白か?否かは、if文で判断します。

投稿日時 - 2009-05-08 10:55:00

あなたにオススメの質問