分頁顯示在網(wǎng)頁制作中是一件十分普遍的事情,因為在瀏覽一些頁面的時候總不會都顯示在一個頁面里。 同樣,,在Excel工人表中,,也會有分頁的一中方法,只不過在表中以隱藏方式來實現(xiàn)分頁,。 本節(jié)主要介紹內(nèi)容為在vba窗體中實現(xiàn)分頁顯示數(shù)據(jù)表,。 其中,運用到許多知識,,包括對工作表SQL查詢,,以及ListView控件的添加。 這些在Excel初級應(yīng)用中,,通常不會用到,當(dāng)然也沒有必要用,。 但是要想做到自由控制數(shù)據(jù),,那就是一件必然要學(xué)會的內(nèi)容。 如果,,有一些數(shù)據(jù)庫操作技能,,那么對本節(jié)的理解,還是十分容易的,。 下圖為顯示效果: 圖中顯示一出一個工作表的數(shù)據(jù)內(nèi)容,,下面有一些按鈕,可以實現(xiàn)數(shù)據(jù)表上下翻頁功能,。 這就是說,,不需要把所有的工作記錄都顯示出來,可以一頁頁地翻看,,如果有幾百頁,,那么查找起來還是有一些便捷性的。 下面重點看一下代碼: Private Sub AddListView(Lobj As Object, rsPage As Integer) Dim conn As Object Dim rs As Object Dim StrPath As String Dim StrSql As String Dim i As Integer, j As Integer Set conn = CreateObject("ADODB.Connection")'新建連接對象 Set rs = CreateObject("ADODB.RecordSet")'新建記錄對象 StrPath = ThisWorkbook.FullName conn.Open "Provider=Microsoft.ACE.OLEDB.12.0;" & "Extended Properties=Excel 12.0;" _ & "Data Source=" & StrPath'打開連接對象 StrSql = "SElECT * FROM [" & xSheet & "$]"'查詢工作表語句 rs.Open StrSql, conn, 1, 1 rs.pagesize = 20 '設(shè)置每頁顯示記錄數(shù) rs.absolutepage = rsPage '設(shè)置當(dāng)前頁數(shù) Lobj.ColumnHeaders.Clear For i = 0 To rs.Fields.Count - 1 Lobj.ColumnHeaders.Add , , rs.Fields(i).Name Next i With Lobj .ListItems.Clear For i = 1 To rs.pagesize 'rs.RecordCount If rs.EOF Then Exit For .ListItems.Add , , rs.Fields(0).Value For j = 1 To rs.Fields.Count - 1 If VBA.Len(rs.Fields(j).Value) <> 0 Then .ListItems(i).SubItems(j) = rs.Fields(j).Value'添加ListView數(shù)據(jù) End If Next j rs.movenext '下一記錄 Next i End With rs.Close conn.Close Set rs = Nothing Set conn = Nothing End Sub 代碼中應(yīng)用了Recordset 對象,,ADO Recordset 對象用于容納一個來自數(shù)據(jù)庫表的記錄集,,示例中用來存放工作表的記錄集。 還有一個Connection對象,,ADO Connection 對象用于創(chuàng)建一個到達(dá)某個數(shù)據(jù)源的開放連接,,也就是和數(shù)據(jù)表建立鏈接的對象。 至于這兩個對象是如何工作的,,并不需要了解,,因為它已經(jīng)做好一切,只需要合理地運用對象的方法即可,。 以后會專門來介紹關(guān)于ADO對象的使用方法,。 按鈕代碼如下所示: Private Sub 第一頁() Dim x As Integer If Not VBA.IsNumeric(Me.TextBox1.Value) Then Exit Sub x = Me.TextBox1.Value If x = 1 Then MsgBox "已經(jīng)是第一頁", vbInformation, "提示" Exit Sub Else AddListView Me.ListView1, 1 '刷新ListView Me.TextBox1.Value = 1 End If End Sub Private Sub 下一頁() Dim x As Integer If Not VBA.IsNumeric(Me.TextBox1.Value) Then Exit Sub x = Me.TextBox1.Value If x = 1 Then MsgBox "已經(jīng)是第一頁", vbInformation, "提示" Exit Sub End If x = x - 1 If x >= 1 And x <= xCount Then AddListView Me.ListView1, x '刷新ListView Me.TextBox1.Value = x Else Me.TextBox1.Value = 1 End If End Sub 實現(xiàn)上下翻頁功能之后,就不用再為一個工表,全部加載到LIstView頁煩惱了,。 利用工具實現(xiàn)數(shù)據(jù)的有規(guī)律組合,,這就是我們要達(dá)到的最簡單的目的。 |
|