- ベストアンサー
シートからのListViewへのやり方
- Excel VBAを使って、シート上のデータをListViewに表示させる方法について教えてください。
- ListViewには、名前、性別、血液型、生年月日のデータを表示したいです。
- 現在利用しているコードでは、シートの列Bから最終行までのデータを取得し、ListViewに追加しています。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
セルのデータを一気に配列変数に読み込んで配列変数のデータでループしてみてはいかがでしょう。 変更点だけ記載します。 Dim buf As Variant Dim LastRow As Long '.ColumnHeaders.Add , "F", "生年月日", 100 の後ろに LastRow = Cells(Rows.Count, "B").End(xlUp).Row buf = Cells(4, "B").Resize(LastRow, 5).Value For i = 1 To LastRow - 3 'Cells(Rows.Count, "B").End(xlUp).Row Application.ScreenUpdating = False With .ListItems.Add .Text = Format(buf(i, 1), "0") '.Text = Right(Space(3) & .Text, 3) .SubItems(1) = buf(i, 2) 'Cells(i, "C") .SubItems(2) = buf(i, 3) 'Cells(i, "D") .SubItems(3) = buf(i, 4) 'Cells(i, "E") .SubItems(4) = buf(i, 5) 'Cells(i, "F") End With Next
その他の回答 (1)
- imogasi
- ベストアンサー率27% (4737/17070)
これは何の(どういう)質問ですか? 掲示したコードでは、うまく行かないとか、か? データ実例でも挙げて質問するもんだよ。 Userform1 のInitializeイベントのコードとして Private Sub UserForm_Initialize() With ListView1 .View = lvwReport .FullRowSelect = True .AllowColumnReorder = True .Gridlines = True .AllowColumnReorder = True '列幅の変更を許可 .CheckBoxes = True 'チェックボックスの追加 '.ForeColor = vbBlue .ColumnHeaders.Add , "B", "名前", 100 .ColumnHeaders.Add , "A", "NO", 70 .ColumnHeaders.Add , "C", "性別", 50 .ColumnHeaders.Add , "D", "血液型", 50 .ColumnHeaders.Add , "F", "生年月日", 100 '---- For i = 4 To Cells(Rows.Count, "B").End(xlUp).Row Application.ScreenUpdating = False With .ListItems.Add .Text = Cells(i, "B") .SubItems(1) = Cells(i, "A") .SubItems(2) = Cells(i, "C") .SubItems(3) = Cells(i, "D") .SubItems(4) = Cells(i, "E") End With Next End With Application.ScreenUpdating = True End Sub を実行すると データ例 A3:E7で NO 名前 性別 血液型 生年月日 1 木村 男 A 2002/2//3 2 青木 男 B 2003/4/1 3 菊池 男 O 2004/5/12 4 赤木 男 AB 2002/10/12 下記のようになった。 (画像略)上記データ例での、実行結果を見てください。 それをと、上記コードを参考にして修正したらどうか。
お礼
なにか質問の仕方で ご迷惑をおかけしました。 失礼いたしました。
お礼
ご返事ありがとうございます。 とても嬉しいです。 そしておもいどおりです。