• ベストアンサー

エクセル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

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

  • ベストアンサー
  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.2

AddItemを使う方法も有るかと思うが、 配列を作って一括でセットする方法がある。 例データ Sheet1 A2:E7 A列ーB列ーC列ーD列ー E列 a1 b1 c1 d1 e1 a2 b2 c2 d2 a3 b3 c3 d3 e3 a4 b4 c4 d4 a5 b5 c5 d5 e5 a6 b6 c6 d6 e6 コード 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 ーーーーーー ユーザーフォームの実行でリストボックスに内容が表示される。

ooyasima
質問者

お礼

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

その他の回答 (1)

noname#111860
noname#111860
回答No.1

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