類模組是VBA的靈魂,這是個不可捉摸的幻影,但是真真切切地又存在。如果掌握了類模組的使用,那麼在處理各種應用的過程當中就遊刃有餘了。本節通過一個示例,學習一下類模組中都可
2021-08-23 03:04:02
類模組是VBA的靈魂,這是個不可捉摸的幻影,但是真真切切地又存在。
如果掌握了類模組的使用,那麼在處理各種應用的過程當中就遊刃有餘了。
本節通過一個示例,學習一下類模組中都可以做些什麼?
如下圖所示,設計一個計算長方形或長方體的周長,面積和體積的簡單應用。
輸入長方形的長、寬和高,計算出結果來。同時可以繪製一個圖形顯示一個大概的效果。
窗體制作這裡就略過,可以用各種辦法完成,之前的文章也有介紹。
重點在滑鼠單擊按鈕上面的程式碼,為什麼說類模組是靈魂,因為滑鼠事件之下,可以完成一些我們無法察覺的變化。
首先新建一個類模組,模組名為rectangle,然後編輯如下程式碼:
Option Explicit
Public WithEvents cst As MSForms.Image '定義一個圖形物件
Public w As Double '定義變數 寬
Public h As Double '定義變數 高
Public l As Double '定義變數 長
Public Function S() As Variant '計算面積函數
S = VBA.Format(w * l, "0.00")
End Function
Public Function C() As Variant '計算周長函數
C = VBA.Format(2 * (w + l), "0.00")
End Function
Public Function V() As Variant '計算體積函數
V = VBA.Format(w * h * l, "0.00")
End Function
Public Sub DrowR(cobj As Object) '繪製圖形過程
With cobj
.Visible = True
.Width = w
.Height = l
.BackColor = RGB(211, 2, 2)
End With
End Sub
程式碼中很清楚地看到,可以定義變數,可以定義函數,可以定義過程。
那麼如何來使用這些定義的變數和函數過程呢?
用了下面的程式碼,在按鈕單擊事件中編寫如下程式碼:
Option Explicit
Dim g As New rectangle'定義新建的類
Private Sub CommandButton1_Click()
Dim l As Variant, w As Variant, h As Variant
l = VBA.Trim(Me.TextBox1.Value)
w = VBA.Trim(Me.TextBox2.Value)
h = VBA.Trim(Me.TextBox3.Value)
g.l = l'長
g.w = w'寬
g.h = h'高
Me.TextBox4.Value = g.C'計算周長
Me.TextBox5.Value = g.S'計算面積
Me.TextBox6.Value = g.V'計算體積
g.DrowR Me.Image1'繪製一個長方形
End Sub
這樣就給這個按鈕同時賦予了幾個計算功能,如果願意,可以繼續在類模組中編寫其它功能,只要在事件中呼叫就可以了。
是不是很方便。
歡迎關注、收藏
---END---
相關文章
類模組是VBA的靈魂,這是個不可捉摸的幻影,但是真真切切地又存在。如果掌握了類模組的使用,那麼在處理各種應用的過程當中就遊刃有餘了。本節通過一個示例,學習一下類模組中都可
2021-08-23 03:04:02
外星人的電腦一直都非常的高貴,外星人的顯示器也不簡單!最近在網上看到一臺外星人顯示器官方賣1.5萬,在渠道的價格看能便宜幾千元,1.1萬元就能入手,好奇害死貓,於是入手給大家分享
2021-08-23 03:03:51
在二叉樹的操作實現中,常常需要對其所有節點進行某種操作,這種對所有節點逐一進行的操作就是遍歷。遍歷二叉樹的遞迴實現遍歷二叉樹是指按照某種順序訪問二叉樹中的每個節點,使
2021-08-23 03:03:37
在日常辦公中經常會使用excel表格,在表格中有一些重複的資料,有時需要將它們篩選出來,那麼怎麼快速篩選這些重複的資料呢?1、以如下表格為例,介紹下如何篩選出表格中重複的資料;2
2021-08-23 03:03:30
近年來,眼看中國晶片領域迅速發展,感受到威脅的有關方面不斷加大對中國半導體產業的封鎖力度,導致部分中國科技公司蒙受了不同程度的損失。不過,在打壓力度越來越大的同時,中國半
2021-08-23 03:03:17
眾所周知,今年華為釋出的旗艦手機P50已經成為了一款4G手機,而在釋出會上,餘承東說,我們的5G晶片也只能當4G用,原因就是5G射頻晶片華為也買不到了。短時間來看,華為已經不可能推出5
2021-08-23 03:03:09