日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

VBA类模块介绍

發布時間:2023/12/20 编程问答 41 豆豆
生活随笔 收集整理的這篇文章主要介紹了 VBA类模块介绍 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

同其他編程語言一樣,VBA有可以創建類對象,VBA的類對象有自己的屬性、方法、事件

公共變量和私有變量的區別

  • 公共變量:可以跨模塊調用,使用public關鍵詞,在模塊最上方聲明
  • 私有變量:只能在本模塊類使用,使用private關鍵詞定義,在模塊最上方聲明
  • 函數、過程未使用關鍵詞聲明,默認為public,可以跨模塊使用
public i as long ' 聲明公共變量,不同模塊都可以調用 private num as byte ' 聲明私有變量,只在當前模塊內可以使用' 未帶關鍵詞聲明,等同于public聲明 Sub public_test() MsgBox "未帶關鍵詞,默認為public,可以跨模塊調用該方法" End Sub' 使用private聲明,只能在當前模塊使用 Private Sub private_test() MsgBox "使用private私有定義,只能在當前模塊使用" End Sub

插入類模塊

打開VBE窗口,點擊插入-插入類模塊,win系統界面可能會有些許區別(win快捷鍵:alt+f11)
面板左下方,可以修改類命名,這里我們修改類命名為Person

類的屬性

  • 直接在類模塊聲明變量:可隨便修改
  • 使用關鍵詞Property定義類屬性:可設置只讀,修改有效性驗證等
    外部過程修改屬性值時,會執行Property過程。過程中可以編寫代碼,對設置的值進行檢查,控制其在一個規定的范圍中。Property過程有以下3種形式:
    • Property Let:這類過程用來設置類模塊的屬性值。
    • Property Get:這類過程用來讀取類模塊的屬性值。
    • Property Set:這類過程用來設置對對象的引用。
      在使用Property過程設置屬性值時,類模塊中的變量可聲明為Private類型,避免過程直接修改類模塊中變量的值。
      每個Property Get的過程聲明行都需要指定屬性的名稱和數據類型
Public public_var as long ' 可以在類模塊頂部通過public聲明一個屬性,不過該屬性可以在其他模塊直接修改Private m_age As Byte ' 定義年齡屬性 Private m_sex As String ' 定義性別屬性 Private m_name As String ' 定義姓名屬性 Private m_weight As Long ' 定義體重屬性Property Get age() as Byte age = m_age ' 返回年齡值 End PropertyProperty Let weight(m_weight As Long) ' let過程必須帶一個變量參數賦值 weight = m_weight ' 設置體重屬性 End Property' Exit Propert語句可以結束Propert過程 Property Let age(a as long) If a >= 0 And a <= 100 Then ' 設置范圍,變量為數值,且在0-100之間m_age = a ElseMsgBox "您設置的年齡無效,請輸入0-100的數字"Exit Property ' 如果變量無效則結束property過程 End If End Property

類的方法

同過程、函數,直接在類模塊里寫函數、過程,即為類的方法

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,右側選擇對應的事件。

Private Sub Class_Initialize() m_weight = 60 ' 初始化m_weight變量 End Sub

類的實例調用

現在我們寫了這樣一個類模塊

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

總結

以上是生活随笔為你收集整理的VBA类模块介绍的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。