版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
本文格式為Word版,下載可任意編輯——VBA實(shí)戰(zhàn)系列(ListView控件)
冬雨之VBA項(xiàng)目實(shí)戰(zhàn)應(yīng)用:470208739
VBA項(xiàng)目實(shí)戰(zhàn)__ListView控件應(yīng)用
ListView控件是一款十分優(yōu)秀的表格控件,被廣泛應(yīng)用于VBA項(xiàng)目。VBA使用者熟練地把握此控件的用法,不僅能大大地增加自己學(xué)習(xí)VBA的興趣,而且對(duì)實(shí)際工作也有很好的幫助。
一、Excel基礎(chǔ)數(shù)據(jù)
二、實(shí)現(xiàn)效果
我們要通過(guò)VBA控件listview,實(shí)現(xiàn)如下圖示效果
三、實(shí)現(xiàn)過(guò)程
(一)添加listview控件
1.開(kāi)啟VBE編輯器,新建窗體flist
2.添加listview控件。在工具箱中選擇listview控件放入窗體。如工具箱中沒(méi)有該控件,則應(yīng)查找注冊(cè)MSCOMCTL.OCX文件。我們可以依照以下方法進(jìn)行注冊(cè):
1)將文件解壓到“C:\\WINDOWS\\system32〞(WindowsXP);
2)單擊|命令,鍵入“regsvr32C:\\WINDOWS\\system32\\MSCOMCTL.OCX〞(WindowsXP)〞進(jìn)行注冊(cè)。
(二)添加代碼1.添加表頭
PrivateSubUserForm_Initialize()
ListView1.ColumnHeaders.Add,,\日期\ListView1.ColumnHeaders.Add,,\姓名\ListView1.ColumnHeaders.Add,,\性別\ListView1.ColumnHeaders.Add,,\年齡\ListView1.ColumnHeaders.Add,,\聯(lián)系方式\
冬雨Q:470-020-8739
冬雨之VBA項(xiàng)目實(shí)戰(zhàn)應(yīng)用:470208739
ListView1.ColumnHeaders.Add,,\電話(huà)\ListView1.ColumnHeaders.Add,,\診斷\ListView1.ColumnHeaders.Add,,\手術(shù)名稱(chēng)\ListView1.View=lvwReport'顯示格式為報(bào)表格式ListView1.FullRowSelect=True'允許整行選中ListView1.Gridlines=True'顯示網(wǎng)格線(xiàn)'ListView1.Sorted=True'排序EndSub
以上代碼中ListView1.ColumnHeaders.Add,,\日期\中的64代表該表頭字段的寬度,0代表居左顯示方式。
在實(shí)際應(yīng)用中,如何確定列寬對(duì)初學(xué)者來(lái)說(shuō)是一個(gè)難點(diǎn),這里給大家提供一個(gè)確定列寬的實(shí)用方法。尋常ListView控件加載的數(shù)據(jù)都存放在一張excel工作表中,我們先在工作表中調(diào)整好列寬,然后用ListView控件需要加載的excel表格的列寬作為相應(yīng)ListView控件的列寬即可,求列寬可用以vba代碼實(shí)現(xiàn)。個(gè)人具體做法見(jiàn)如下過(guò)程:
Sub代碼生成1__ListView標(biāo)題頭和列寬()DimshAsWorksheet,iSetsh=Sheet1
Debug.Print\
Fori=1Tosh.Cells(1,Columns.Count).End(xlToLeft).Column
Ifi=1ThenDebug.Print\ListView1.ColumnHeaders.Add,,\HDR=yes;IMEX=2';datasource=\
sql=\病例數(shù)據(jù)$A1:Q]\rs.Opensql,cn,1,3
ListView1.ListItems.Clear'清除ListView記錄DoWhileNotrs.EOF'數(shù)據(jù)加載代碼開(kāi)始
SetItm=ListView1.ListItems.Add()
IfNotIsNull(rs.Fields(\日期\日期\IfNotIsNull(rs.Fields(\姓名\姓名\IfNotIsNull(rs.Fields(\性別\性別\IfNotIsNull(rs.Fields(\年齡\年齡\IfNotIsNull(rs.Fields(\聯(lián)系方式\聯(lián)系方式\IfNotIsNull(rs.Fields(\電話(huà)\電話(huà)\IfNotIsNull(rs.Fields(\診斷\診斷\IfNotIsNull(rs.Fields(\手術(shù)名稱(chēng)\手術(shù)名稱(chēng)\IfNotIsNull(rs.Fields(\病理號(hào)\病理號(hào)\IfNotIsNull(rs.Fields(\手術(shù)時(shí)間\手術(shù)時(shí)間\IfNotIsNull(rs.Fields(\病理診斷\病理診斷\IfNotIsNull(rs.Fields(\病情摘要\病情摘要\IfNotIsNull(rs.Fields(\手術(shù)狀況\手術(shù)狀況\IfNotIsNull(rs.Fields(\備注\備注\IfNotIsNull(rs.Fields(\輔助檢查\輔助檢查\IfNotIsNull(rs.Fields(\手術(shù)圖片\手術(shù)圖片\
冬雨Q:470-020-8739
冬雨之VBA項(xiàng)目實(shí)戰(zhàn)應(yīng)用:470208739
IfNotIsNull(rs.Fields(\隨訪\隨訪\'數(shù)據(jù)加載代碼終止rs.MoveNextLooprs.CloseSetrs=Nothingcn.CloseEndSub:
以上面代碼相像,代碼中存在大量類(lèi)似重復(fù)的代碼。一句句打字無(wú)疑影響效率。可以用以下代碼生成部分代碼:
Sub代碼生成2__Listview_item()DimshAsWorksheet,i%,sSetsh=Sheet1
Debug.Print\
Fori=1Tosh.Cells(1,Columns.Count).End(xlToLeft).Columns=Cells(1,i).Value
Ifi=1ThenDebug.Print\ifNotIsNull(rs.Fields(\Itm.Text=rs.Fields(\&\'
Ifi>1ThenDebug.Print\ifNotIsNull(rs.Fields(\rs.Fields(\'
NextiEndSub
Debug馬上窗口顯示,復(fù)
通過(guò)以上兩段代碼,listview控件可以順利加載并列表顯示數(shù)據(jù)。
四、知識(shí)歸納
以上做法僅限于冬雨開(kāi)發(fā)過(guò)程中的一點(diǎn)用法。為便利VBA愛(ài)好者學(xué)習(xí),將listview控件相關(guān)知識(shí)歸納如下:(一)語(yǔ)法
ListView1.ColumnHeaders.Add(index,key,text,width,alignment,icon)Add方法的語(yǔ)法包含下面部分:
冬雨Q:470-020-8739
冬雨之VBA項(xiàng)目實(shí)戰(zhàn)應(yīng)用:470208739
部分描述
object必需的。對(duì)象表達(dá)式,其值是ColumnHeaders集合。index可選的。唯一標(biāo)識(shí)對(duì)象集合成員的整數(shù)。
key可選的。唯一的字符串表達(dá)式,可以用來(lái)訪問(wèn)集合的成員。text可選的。出現(xiàn)在ColumnHeader對(duì)象中的字符串。
width可選的。數(shù)值表達(dá)式,它使用控件容器的度量單位指定對(duì)象的寬度。
alignment可選的。決定ColumnHeader對(duì)象中文本對(duì)齊方式的整數(shù)。關(guān)于設(shè)置信息,請(qǐng)參閱“請(qǐng)參閱列表中Alignment屬性的信息。
icon可選的。Smallicons圖象列表中圖象的關(guān)鍵字或索引。說(shuō)明Add方法返回新插入的ColumnHeader對(duì)象的引用。使用index參數(shù)在ColumnHeaders集合的特定位置插入列標(biāo)頭。
當(dāng)ColumnHeaders集合成員可能動(dòng)態(tài)變更時(shí),應(yīng)使用Key屬性引用它們,由于任何ColumnHeader對(duì)象的Index屬性都可以改變。(二)屬性
1、對(duì)齊屬性
ListView控件在初始化之前,為美觀之需要,我們可以對(duì)每列數(shù)據(jù)排列格式進(jìn)行設(shè)置,每列數(shù)據(jù)可或左對(duì)齊、或右對(duì)齊、或中間對(duì)齊,該項(xiàng)工作和加載表頭同步進(jìn)行,下面以加載“姓名〞表頭為例,其代碼如下:
左對(duì)齊:ListView1.ColumnHeaders.Add,,\姓名\右對(duì)齊:ListView1.ColumnHeaders.Add,,\姓名\中間對(duì)齊:ListView1.ColumnHeaders.Add,,\姓名\這里需特別提醒ListView控件首列只能左對(duì)齊,否則代碼會(huì)出現(xiàn)編譯錯(cuò)誤。
2、排序?qū)傩?/p>
ListView控件在初始化之前,可以根據(jù)用戶(hù)需求對(duì)指定列進(jìn)行排序,其代碼如下:
ListView1.Sorted=True'listivew的排序?qū)傩詾門(mén)rue時(shí),ListView控件將對(duì)指定列進(jìn)行排序,屬性為False時(shí)ListView控件將不具有排序功能。
ListView1.SortKey=0'0為listivew排序的列索引號(hào),0為第1列、1為第2列,以此類(lèi)推,若此項(xiàng)屬性值未設(shè)置,ListView控件將默認(rèn)按首列排序。假使我們想點(diǎn)擊
ListView表頭排序,可用以下代碼實(shí)現(xiàn):
PrivateSubListView1_ColumnClick(ByValColumnHeaderAsMSComctlLib.ColumnHeader)IfColumnHeader.Index-1>-1ThenListView1.SortKey=ColumnHeader.Index-1EndSub
3、顯示方式設(shè)置
ListView控件除了可以對(duì)數(shù)據(jù)排列格式進(jìn)行設(shè)置外,還可以對(duì)數(shù)據(jù)顯示方式進(jìn)行設(shè)置,常見(jiàn)的有日期顯示方式、金額顯示方式,以單元格F3數(shù)據(jù)加載給ListView控件第2列為例,其代碼如下:
日期顯示方式:Itm.subitem1(1)=Format(Cells(3,\金額顯示方式:Itm.subitem1(1)=Format(Cells(3,\4、選擇ListView控件任意一行,獲取行號(hào)I=ListView1.SelectedItem.Index5、獲取ListView控件第I行,首列的值ListView1.ListItems(I).Text
6、獲取ListView控件第I行,J列的值ListView1.ListItems(I).SubItems(J-1)
冬雨Q:470-020-8739
冬雨之VBA項(xiàng)目實(shí)戰(zhàn)應(yīng)用:470208739
7、刪除ListView控件第I行數(shù)據(jù)ListView1.ListItems.RemoveI8、刪除ListView控件所有數(shù)據(jù)ListView1.ListItems.Clear9、獲取ListView控件記錄數(shù)
ListView1.ListItems
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024的廣東省室內(nèi)環(huán)境質(zhì)量保證合同C款(家具購(gòu)買(mǎi))
- 2024建筑合同法全文
- 鋼結(jié)構(gòu)施工承包合同范本
- 2024個(gè)人住房裝修合同書(shū)協(xié)議
- 收藏品贈(zèng)送合同范本
- 面包店轉(zhuǎn)讓協(xié)議書(shū)模板
- 建筑工程監(jiān)理服務(wù)合同
- 建筑設(shè)備出租合同范本
- 普通合伙人合同協(xié)議書(shū)范文
- 證券交易云平臺(tái)運(yùn)營(yíng)協(xié)議
- 中國(guó)人民解放軍空成立紀(jì)念日課件模板
- 2024秋期國(guó)家開(kāi)放大學(xué)《公共政策概論》一平臺(tái)在線(xiàn)形考(形考任務(wù)1至4)試題及答案
- 2025年考研政治政治理論時(shí)政熱點(diǎn)知識(shí)測(cè)試題庫(kù)及答案(共三套)
- 大學(xué)生生涯發(fā)展展示 (修改)
- 電氣工程師生涯人物訪談報(bào)告
- 康復(fù)評(píng)定技術(shù)說(shuō)課課程匯報(bào)
- 《2021國(guó)標(biāo)暖通圖集資料》14K117-3 錐形風(fēng)帽
- 機(jī)動(dòng)車(chē)維修企業(yè)安全生產(chǎn)標(biāo)準(zhǔn)化考評(píng)方法和考評(píng)實(shí)施細(xì)則(完整版)
- 江西省職業(yè)培訓(xùn)補(bǔ)貼范圍及標(biāo)準(zhǔn)-江西省職業(yè)技能鑒定指導(dǎo)中心
- 七年級(jí)生物上冊(cè)(濟(jì)南版)知識(shí)點(diǎn)歸納
- 應(yīng)急聯(lián)防聯(lián)動(dòng)協(xié)議
評(píng)論
0/150
提交評(píng)論