tft每日頭條

 > 圖文

 > vba 模塊 裡的 子程序

vba 模塊 裡的 子程序

圖文 更新时间:2024-07-30 14:22:34

vba 模塊 裡的 子程序?除了使用Excel提供的标準類外,VBA還提供類模塊功能,使開發者可根據需要定義自己的類,我來為大家科普一下關于vba 模塊 裡的 子程序?以下内容希望對你有幫助!

vba 模塊 裡的 子程序(使用類模塊自定義類和對象)1

vba 模塊 裡的 子程序

除了使用Excel提供的标準類外,VBA還提供類模塊功能,使開發者可根據需要定義自己的類。

将常用代碼封裝為類,可重複應用在不同的應用程序中,從而提高程序的開發效率。

在自定義類中,通過屬性、方法和事件向用戶提供服務,把完成運算的過程隐藏起來。

1 類的作用

在VBA中,開發人員不使用類模塊也能開發絕大多數的應用系統。不使用類模塊編寫程序時,一些程序代碼和程序處理的數據是分離的。這樣可能會出現多個不同過程用一定的規則修改數據。當需要調整修改數據的規則時,就需要修改多段程序的代碼。

如果使用類将數據和處理這些數據的代碼封裝在一起,将使管理任務更加簡單。主要體現在以下幾個方面:

1.1 數據作為對象的屬性,都與特定對象相關聯,使數據與對象具有特定的關系(不再是分離的松散關系)。

1.2 數據作為對象的屬性,用戶隻能通過設置的接口(屬性、方法和事件)進行修改,使對象的數據可保持在有效的範圍内。

1.3 使用對象提供的方法,對一個對象可以進行的操作提供統一接口。在對象的定義中,隻需要修改一次代碼,即可調整數據的修改規則。

1.4 使用類可以将複雜的過程封裝在類的内部,類的使用人員不需要知道類的實現過程,隻需要熟悉類的屬性、方法和事件即可。

2 創建類模塊

通過創建一個“數據庫類”來說明自定義類的操作細節。該類的功能在于可創建與Access數據庫的連接。将數據庫連接字符封裝在類模塊中,用戶通過屬性給出要訪問的Access數據庫名和SQL語句,執行内置的方法即可返回記錄集。

2.1 新建類模塊

Alt F11→“插入”→“類模塊”→在“屬性”窗口中修改類的名稱為"clsADO"。

2.2 創建類屬性

2.2.1 創建私有變量

Option Explicit

'使用本類模塊,需添ADO的引用"Microsoft ActiveX Data Objects 2.8 Library"

Private cnn As Connection '連接對象

Private rs As Recordset '記錄集對象

Private m_DBFullName As String 'Access數據庫名稱(包含路徑信息)

Private m_CommandText As String 'SQL語句

2.2.2 創建Property Get過程來獲取對象的屬性值

Property Get DBFullName() As String '返回數據庫名稱

DBFullName = m_DBFullName

End Property

Property Get CommandText() As String '返回SQL語句

CommandText = m_CommandText

End Property

2.2.3 創建Property Let過程改變對象屬性

Property Let DBFullName(strDBFullName As String) '設置數據名稱

If LCase(Right(strDBFullName, 4)) <> ".mdb" And _

LCase(Right(strDBFullName, 6)) <> ".accdb" Then

Exit Property

End If

m_DBFullName = strDBFullName

End Property

Property Let CommandText(strSQL As String) '設置SQL語句

m_CommandText = strSQL

End Property

2.3 定義類的方法

Private Sub ConnDB() '連接數據庫

If cnn.State = 0 And Len(m_DBFullName) > 0 Then

cnn.Provider = "Microsoft.Jet.OLEDB.4.0"

cnn.Open m_DBFullName

End If

End Sub

Public Sub CloseDB() '關閉連接

cnn.Close

End Sub

Public Function RunSQL() As Recordset '執行SQL語句

If Len(m_CommandText) > 0 Then

Call ConnDB '創建數據庫連接

If rs.State <> 0 Then rs.Close

rs.Open Source:=m_CommandText, _

ActiveConnection:=cnn, _

CursorType:=adOpenStatic, _

LockType:=adLockReadOnly

Set RunSQL = rs '返回記錄集

End If

End Function

2.4 定義類模塊的事件

Private Sub Class_Initialize() '初始化類

Set cnn = New Connection

Set rs = New Recordset

End Sub

Private Sub Class_Terminate() '終止類

If cnn.State = 1 Then

cnn.Close

End If

Set cnn = Nothing

Set rs = Nothing

End Sub

3 使用類模塊

3.1 用新定義的類聲明對象

Dim tstADO As New clsADO

3.2 使用對象編寫過程

Sub test()

Dim rs As Recordset, fld As Field

On Error Resume Next

tstADO.DBFullName = ThisWorkbook.Path & "\Northwind.mdb" '設置屬性

tstADO.CommandText = "select * from 客戶" '設置屬性

Set rs = tstADO.RunSQL '調用自定義對象的方法

With Worksheets(1)

i = 1: j = 1

For Each fld In rs.Fields

.Cells(i, j) = fld.Name

j = j 1

Next

j = 1

i = i 1

Do While Not rs.EOF

For Each fld In rs.Fields

.Cells(i, j) = fld.Value

j = j 1

Next

j = 1

rs.MoveNext

i = i 1

Loop

End With

End Sub

以上過程執行完後,即可在工作簿的第一個工作表中顯示數據庫“Northwind.mdb”中的數據庫表“客戶”的全部數據。

,

更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!

查看全部

相关圖文资讯推荐

热门圖文资讯推荐

网友关注

Copyright 2023-2024 - www.tftnews.com All Rights Reserved