ListView控件入門 ListView控件是一款非常優(yōu)秀的表格控件,,對vba初學(xué)者來說,,熟練地掌握此控件的用法,不僅能大大地增加自己學(xué)習(xí)vba的興趣,,而且對實際工作也有很好的幫助,,本文將對ListView控件的各種用法作詳細(xì)介紹,由于水平有限,,若有不當(dāng)之處,,歡迎批評指正。 一,、 添加表頭 ListView控件添加表頭,,一般在窗體的初始化事件中完成,假如給一ListView1控件添加姓名,、性別,、文化,、住址、身份證可用以下代碼實現(xiàn): Private Sub UserForm_Initialize() ListView1.ColumnHeaders.Add , , '姓名', 40 ListView1.ColumnHeaders.Add , , '性別', 40 ListView1.ColumnHeaders.Add , , '文化', 40 ListView1.ColumnHeaders.Add , , '住址', 120 ListView1.ColumnHeaders.Add , , '身份證', 80 ListView1.View = lvwReport ListView1.FullRowSelect = True ListView1.Gridlines = True End Sub 在以上代碼中40,、40,、40、120,、80代表該字段所在的列寬,在實際應(yīng)用中,,如何確定列寬對初學(xué)者來說是一個難點,,這里給大家提供一個確定列寬的實用方法,通常ListView控件加載的數(shù)據(jù)都存放在一張excel工作表中,我們先在工作表中調(diào)整好列寬,,然后用ListView控件需要加載的excel表格的列寬作為相應(yīng)ListView控件的列寬即可,,求列寬可用以vba代碼實現(xiàn)(如求excel表格D列的列寬) Sub wdt() MsgBox Cells(1, 'd').Width End Sub 其他屬性介紹 ListView1.View = lvwReport,顯示格式為報表格式 ListView1.FullRowSelect = True, 允許整行選中 ListView1.Gridlines = True, 顯示網(wǎng)格線 在1樓的章節(jié)中,我們對ListView控件加載表頭作了較為詳盡的介紹,,在實際應(yīng)用中,,由于加載的對象都事先存儲在excel表格中,我們在加載表頭時還可以對代碼進(jìn)行優(yōu)化,,通過循環(huán)的方式,,減少代碼的編寫量,比如有一張excel表格,首行為標(biāo)題行,共有10個字段,,加載該表頭時可用以下代碼簡單實現(xiàn): Private Sub UserForm_Initialize() For J = 1 To 10 ListView1.ColumnHeaders.Add , , Cells(1, J), Cells(1, J).Width Next ListView1.View = lvwReport ListView1.FullRowSelect = True ListView1.Gridlines = True End Sub 清除表頭可用以下代碼實現(xiàn): ListView1.ColumnHeaders.Clear,請大家記住該代碼,,在后面深入介紹中會應(yīng)用到此語句。 二,、ListView加載數(shù)據(jù) 在第一章中,我們學(xué)習(xí)了如何給ListView控件加載表頭,,在本章中我們將學(xué)習(xí)如何給ListView控件加載數(shù)據(jù),假如ListView控件的表頭為姓名,、性別,、文化、住址,、身份證,,張三的個人信息如下: 男、大學(xué),、南京市白下區(qū),、320123196610162018,將張三的個人信息加載給ListView控件代碼如下: Set Itm = ListView1.ListItems.Add() Itm.Text = '張三' Itm.SubItems(1) = '男' Itm.subitems(2) = '大學(xué)' Itm.subitems(3) = '南京市白下區(qū)' Itm.subitems(4) = '320123196610162018' 以上是加載1個人的信息,若現(xiàn)在有一張excel表格,,其表名為《員工信息表》,該表首行為姓名,、性別、文化,、住址,、身份證標(biāo)題, 從第2行到100行是99個人的個人信息,,現(xiàn)在要將這99個人的個人信息加載到ListView控件中,可用循環(huán)方法實行,,代碼如下: For i = 2 To 100 Set Itm = ListView1.ListItems.Add() Itm.Text = Cells(i, 1) Itm.subitems(1) = Cells(i, 2) Itm.subitems(2) = Cells(i, 3) Itm.subitems(3) = Cells(i, 4) Itm.subitems(4) = Cells(i, 5) NextNext ListView控件加載數(shù)據(jù)除上述加載方法之外,,還有一種重要的數(shù)據(jù)加載方法即加載SQL查詢記錄集,以上述《員工信息表》為例,其查詢,、加載數(shù)據(jù)代碼如下: Dim cn As Object, rs As Object Set cn = CreateObject('ADODB.Connection') '連接數(shù)據(jù)庫 Set rs = CreateObject('ADODB.Recordset') cn.Open 'dsn=excel files;dbq=' & ThisWorkbook.FullName Sql = 'Select * from [員工信息表$] ' rs.Open Sql, cn, 1, 3 ListView1.ListItems.Clear '清除ListView記錄 Do While Not rs.EOF Set Itm=ListView1.ListItems.Add() '添加記錄 Itm.Text = rs.Fields('姓名') '添加第一列內(nèi)容 Itm.SubItems(1) = rs.Fields('性別') '添加第二列內(nèi)容 Itm.SubItems(2) = rs.Fields('文化') '添加第三列內(nèi)容 Itm.SubItems(3) = rs.Fields('住址') '添加第四列內(nèi)容 Itm.SubItems(4) = rs.Fields('身份證') '添加第五列內(nèi)容 rs.MoveNext Loop rs.Close: Set rs = Nothing: cn.Close 以上代碼中牽涉到SQL查詢相關(guān)知識點,,對SQL查詢不熟悉的朋友,可在網(wǎng)上查閱相關(guān)知識進(jìn)行學(xué)習(xí),,這樣才能更好地理解上述代碼,,更加方便日后的實際應(yīng)用。 三,、ListView控件的重要屬性和方法 在本章中我們將介紹ListView控件的一些重要屬性和方法,望大家能牢記這些屬性和方法,。 1、對齊屬性 ListView控件在初始化之前,,為美觀之需要,,我們可以對每列數(shù)據(jù)排列格式進(jìn)行設(shè)置,每列數(shù)據(jù)可或左對齊,、或右對齊,、或中間對齊,該項工作和加載表頭同步進(jìn)行,,下面以加載“ 姓名”表頭為例,,其代碼如下: 左對齊: ListView1.ColumnHeaders.Add , , '姓名', 40, lvwColumnLeft 右對齊: ListView1.ColumnHeaders.Add , , '姓名', 40, lvwColumnRight 中間對齊: ListView1.ColumnHeaders.Add , , '姓名', 40, lvwColumnCenter 這里需特別提醒ListView控件首列只能左對齊,否則代碼會出現(xiàn)編譯錯誤,。 2,、排序?qū)傩?/p> ListView控件在初始化之前,可以根據(jù)用戶需求對指定列進(jìn)行排序,其代碼如下: ListView1.Sorted = True 'listivew的排序?qū)傩詾門rue時, ListView控件將對指定列進(jìn)行排序,,屬性為False時ListView控件將不具有排序功能,。 ListView1.SortKey = 0 ' 0為listivew排序的列索引號,0為第1列、1為第2列,以此類推,,若此項屬性值未設(shè)置,,ListView控件將默認(rèn)按首列排序。如果我們想點擊ListView表頭排序,可用以下代碼實現(xiàn): Private Sub ListView1_ColumnClick(ByVal ColumnHeader As MSComctlLib.ColumnHeader) If ColumnHeader.Index - 1 > -1 Then ListView1.SortKey = ColumnHeader.Index - 1 End Sub 3,、顯示方式設(shè)置 ListView控件除了可以對數(shù)據(jù)排列格式進(jìn)行設(shè)置外,,還可以對數(shù)據(jù)顯示方式進(jìn)行設(shè)置,常見的有日期顯示方式,、金額顯示方式,以單元格F3數(shù)據(jù)加載給ListView控件第2列為例,,其代碼如下: 日期顯示方式: Itm.subitem1(1) = Format(Cells(3, 'F'), 'YYYYY-MM-DD') 金額顯示方式: Itm.subitem1(1) = Format(Cells(3, 'F'), '#0.00') 4、選擇ListView控件任意一行,獲取行號 I = ListView1.SelectedItem.Index 5,、獲取ListView控件第I行,首列的值 ListView1.ListItems(I).Text 6,、獲取ListView控件第I行,J列的值 ListView1.ListItems(I).SubItems(J - 1) 7、刪除ListView控件第I行數(shù)據(jù) ListView1.ListItems.Remove I 8,、刪除ListView控件所有數(shù)據(jù) ListView1.ListItems.Clear 9,、獲取ListView控件記錄數(shù) ListView1.ListItems.Count |
|