工作表任務在自定義窗體上的重現,VBA中Listview控件的獨到之處
摘要:第6行到第12行代碼,使用ColumnHeader對象的Add方法在Listview控件中添加標題列,並設置列標題、列寬和文本對齊方式。ListItem對象的text屬性代表Listview控件的第一列內容,因爲Listview控件的第一列的文本對齊方式只能設置爲左對齊,所以在添加時使用Space函數插入兩個空格,使行標題達到居中顯示的效果。
大家好,我們今日繼續講解VBA代碼解決方案的第103講內容:VBA中使用類似於工作表的Listview控件來顯示你的任務。ListView控件是VBA程序開發中的常用控件,可以用來顯示各項帶圖標的列表,也可以用來顯示帶有子項的列表。Listview控件是微軟通用控件MSCOMCTL.OCX中的一員,因其美觀、易用,是VBA使用者最常用的控件之一。
Listview控件的應用隨處可見,比如你的計算機系統中使用的資源管理器,就是Treeview和Listview做出來的,資源管理器的左邊是Treeview控件,右邊是Listview。Listview有4種視圖,Win7系統的資源管理器有7種顯示方式,XP有5種,其中大圖標對應Listview的lvwIcon,小圖標對應lvwSmallIcon,列表對應lvwList,詳細信息則對應lvwReport。
一:Listview控件的View屬性,這個屬性決定在列表中控件使用何種視圖顯示項目,語法如下:object.view [= value]
參數object是必須的,對象表達式,listview控件。
參數value是必須的,指定控件外觀的整數或常數:
lvwicon 0圖標
lvwsmallicon 1小圖標
lvwlist 2 列表
lvwreport 3 報表
二 ColumnHeader對象。是ListView控件中包含標題文字的項目。應用於ColumnHeader對象的Add方法語法如下:
object.ColumnHeader.Add(index,key,text,width,alignment)
其中參數text代表標題文字,參數width代表標題的列寬,參數alignment代表列標題中文本對齊方式。Listview控件中文本的對齊方法有三種,
lvwColumnLeft0文本向左對齊。(缺省值)
lvwColumnRight1文本向右對齊。
lvwColumnCenter2文本居中對齊。
在Listview控件中第一列的文本對齊方式只能設置爲左對齊。
三 ListItem對象。是ListView控件的項目,應用於ListItem對象的Add方法語法如下:
ListItems.Add(index,key,text,icon,smallIcon)
其中參數text代表添加的項目內容。
四實測實例:使用Listview控件在用戶窗體中顯示數據列表,我們先建立一個窗體:
代碼如下:
Private Sub UserForm_Initialize()
Dim Itm As ListItem
Dim r As Integer
Dim c As Integer
With ListView1
.ColumnHeaders.Add , , "名稱", 50, 0
.ColumnHeaders.Add , , "庫位1", 50, 1
.ColumnHeaders.Add , , "庫位2", 50, 1
.ColumnHeaders.Add , , "庫位3", 50, 1
.ColumnHeaders.Add , , "庫位4", 50, 1
.ColumnHeaders.Add , , "庫位5", 50, 1
.ColumnHeaders.Add , , "庫位6", 50, 1
.View = lvwReport
.Gridlines = True
For r = 2 To Sheet1.[A65536].End(xlUp).Row
Set Itm = .ListItems.Add()
Itm.Text = Space(2) & Sheet1.Cells(r, 1)
For c = 1 To 6
Itm.SubItems(c) = Format(Sheet1.Cells(r, c + 1), "##,#,0.0")
Next
Next
End With
Set Itm = Nothing
End Sub
代碼截圖:
代碼解析:窗體的初始化事件,在窗體顯示時將工作表中數據顯示在Listview控件中。
第6行到第12行代碼,使用ColumnHeader對象的Add方法在Listview控件中添加標題列,並設置列標題、列寬和文本對齊方式。
第13行代碼,設置Listview控件的View屬性爲lvwReport,使Listview控件顯示爲報表型。
第14行代碼,設置Listview控件的Gridlines屬性爲True,顯示網格線。只有在將View屬性設置爲lvwReport時才能顯示網格線,否則Gridlines屬性無效。
第16行代碼,使用ListItem對象的Add方法在Listview控件中添加項目。
第17行代碼,添加行標題。ListItem對象的text屬性代表Listview控件的第一列內容,因爲Listview控件的第一列的文本對齊方式只能設置爲左對齊,所以在添加時使用Space函數插入兩個空格,使行標題達到居中顯示的效果。
第18行到20行代碼,繼續添加其他列的內容。Listview控件其他列的項目需要使用SubItems屬性來添加。
運行後如下圖:
這時就可以看到EXCEL中的資料顯示在臺賬體統的界面了。
今日內容迴向:
1 如何讓工作表數據顯示在控件中?
1 ListView控件是如何顯示數據的?