VBA實(shí)戰(zhàn)系列(ListView控件)_第1頁(yè)
VBA實(shí)戰(zhàn)系列(ListView控件)_第2頁(yè)
VBA實(shí)戰(zhàn)系列(ListView控件)_第3頁(yè)
VBA實(shí)戰(zhàn)系列(ListView控件)_第4頁(yè)
VBA實(shí)戰(zhàn)系列(ListView控件)_第5頁(yè)
已閱讀5頁(yè),還剩4頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(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ì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論