摘要:第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控件在用戶窗體中顯示數據列表,我們先建立一個窗體:

工作表任務在自定義窗體上的重現,VBA中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

代碼截圖:

工作表任務在自定義窗體上的重現,VBA中Listview控件的獨到之處

代碼解析:窗體的初始化事件,在窗體顯示時將工作表中數據顯示在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屬性來添加。

運行後如下圖:

工作表任務在自定義窗體上的重現,VBA中Listview控件的獨到之處

這時就可以看到EXCEL中的資料顯示在臺賬體統的界面了。

今日內容迴向:

1 如何讓工作表數據顯示在控件中?

1 ListView控件是如何顯示數據的?

相關文章