VBA类模块介绍
同其他編程語言一樣,VBA有可以創建類對象,VBA的類對象有自己的屬性、方法、事件
公共變量和私有變量的區別
- 公共變量:可以跨模塊調用,使用public關鍵詞,在模塊最上方聲明
- 私有變量:只能在本模塊類使用,使用private關鍵詞定義,在模塊最上方聲明
- 函數、過程未使用關鍵詞聲明,默認為public,可以跨模塊使用
插入類模塊
打開VBE窗口,點擊插入-插入類模塊,win系統界面可能會有些許區別(win快捷鍵:alt+f11)
 面板左下方,可以修改類命名,這里我們修改類命名為Person
 
類的屬性
- 直接在類模塊聲明變量:可隨便修改
- 使用關鍵詞Property定義類屬性:可設置只讀,修改有效性驗證等
 外部過程修改屬性值時,會執行Property過程。過程中可以編寫代碼,對設置的值進行檢查,控制其在一個規定的范圍中。Property過程有以下3種形式:- Property Let:這類過程用來設置類模塊的屬性值。
- Property Get:這類過程用來讀取類模塊的屬性值。
- Property Set:這類過程用來設置對對象的引用。
 在使用Property過程設置屬性值時,類模塊中的變量可聲明為Private類型,避免過程直接修改類模塊中變量的值。
 每個Property Get的過程聲明行都需要指定屬性的名稱和數據類型
 
類的方法
同過程、函數,直接在類模塊里寫函數、過程,即為類的方法
Sub class_method(str as String) MsgBox "在類里面直接寫過程過函數,即為類方法" MsgBox "向class_method方法里傳入參數:" & str End Sub' 當然也可以寫函數,跟模塊里寫函數是一樣的 Public Function func(num As Integer) MsgBox num End Function類的事件
同工作表,工作簿一樣,類也有事件
- Initialize事件:實例初次創建時觸發
- Terminate事件:最后一個指針釋放或破壞時觸發
可以用Initialize事件設置對象類的默認屬性值;用Terminate事件進行銷毀對象前的整理工作。
 在類模塊下拉列表選擇Class,右側選擇對應的事件。
 
類的實例調用
現在我們寫了這樣一個類模塊
Public var As Long Private m_age As Byte ' 定義年齡屬性 Private m_sex As String ' 定義性別屬性 Private m_name As String ' 定義姓名屬性 Private m_weight As Long ' 定義體重屬性Private Sub Class_Initialize() m_weight = 66 ' 初始化m_weight變量 End SubProperty Let weight(w As Long) m_weight = w ' 設置weight屬性 End PropertyProperty Get weight() As Long weight = m_weight ' 讀取weight屬性 End PropertySub class_method() MsgBox "在類里面直接寫過程過函數,即為類方法" End SubPublic Function func(num As Integer) MsgBox num End FunctionProperty Let age(a As byte) If a >= 0 And a <= 100 Then ' 設置范圍,變量為數值,且在0-100之IsNumeric(a) And間m_age = a ElseMsgBox "您設置的年齡無效,請輸入0-100的數字"Exit Property ' 如果變量無效則結束property過程 End If End PropertyProperty Get age() As Byte age = m_age ' 讀取年齡屬性 End Property我們插入一個模塊,創建類實例調用
Sub test1() Dim m As New Personm.weight = 171 '設置體重屬性 MsgBox m.weightm.class_method ' 調用類方法m.func (111) ' 調用類函數m.age = 190 m.age = 27 Debug.Print m.age End Sub總結
 
                            
                        - 上一篇: STM32H743 USART1 LL
- 下一篇: Zend Studio 10正式版注册破
