Warning: error_log(/data/www/wwwroot/hmttv.cn/caches/error_log.php): failed to open stream: Permission denied in /data/www/wwwroot/hmttv.cn/phpcms/libs/functions/global.func.php on line 537 Warning: error_log(/data/www/wwwroot/hmttv.cn/caches/error_log.php): failed to open stream: Permission denied in /data/www/wwwroot/hmttv.cn/phpcms/libs/functions/global.func.php on line 537
xcel vba編程進(jìn)入深水階段,那就對底層的一些代碼構(gòu)建有一定的了解。
類模塊就是其重要的一環(huán),可以利用類模塊做一些十分有用的事情。
其實在VBA實際應(yīng)用中,離不開類模塊的運用,只有我們并不知道而已。
每一個代碼之后,或許就應(yīng)用到類模塊,大多是系統(tǒng)給我們預(yù)置完成的一些模塊,看上去并不能很明顯地發(fā)現(xiàn),但它實實在在的存在,并處理著所有的表格功能。
本節(jié)重點講一下,如何利用代碼來創(chuàng)建一個類模塊和刪除一個類模塊。
然后再給新建的類模塊添加代碼,代碼可以是你想構(gòu)建的任何功能。
上圖為本節(jié)示例中的部分代碼。
三個按鈕分別實現(xiàn)不同的功能,下面具體看代碼進(jìn)行認(rèn)識,功能都進(jìn)行了模塊化構(gòu)建,所以在使用的時候要分清楚什么地使用這些代碼。
添加類模塊過程:
Public Sub AddClassCode(ClassName As String, CodeString As String)
'添加類模塊代碼
Dim Class As Object
For Each Class In ThisWorkbook.VBProject.VBComponents
If Class.Name=ClassName Then
Class.CodeModule.AddFromString (CodeString)
End If
Next Class
End Sub
刪除類模塊過程:
Public Sub DelClass(ClassName As String)
'刪除類模塊
Dim Class As Object
For Each Class In ThisWorkbook.VBProject.VBComponents
If Class.Name=ClassName Then
ThisWorkbook.VBProject.VBComponents.Remove Class
End If
Next Class
End Sub
添加類模塊代碼過程:
Public Sub AddClassCode(ClassName As String, CodeString As String)
'添加類模塊代碼
Dim Class As Object
For Each Class In ThisWorkbook.VBProject.VBComponents
If Class.Name=ClassName Then
Class.CodeModule.AddFromString (CodeString)
End If
Next Class
End Sub
調(diào)用如上代碼使用下面的按鈕過程:
Private Sub CommandButton1_Click()
Dim ClassName As String, CodeString As String
ClassName="NewClass01" '定義類模塊名稱
DelClass ClassName '刪除類模塊
addClass ClassName '添加類模塊
'定義類模塊代碼
CodeString="Public s As New Worksheet" & VBA.vbCrLf
CodeString=CodeString & "Private Sub opensheet(s As Worksheet)" & VBA.vbCrLf
CodeString=CodeString & "Set s=ActiveSheet(2)" & VBA.vbCrLf
CodeString=CodeString & "s.Select" & VBA.vbCrLf
CodeString=CodeString & "End Sub" & VBA.vbCrLf
AddClassCode ClassName, CodeString '添加類模塊代碼
End Sub
具體實現(xiàn)方法仔細(xì)看代碼,就會慢慢明白。
下面列出重點代碼:
類模塊是一個比較難學(xué)習(xí)的內(nèi)容,要多次進(jìn)行練習(xí),如果很難入門,也不要太著急,如果不是深入編程,進(jìn)行一些很繁雜的程序處理,基本也用不著。
但是,如果學(xué)會之后,那將是一個很大的進(jìn)步。
至于如何利用類模塊來實現(xiàn)一些功能,以后有機會,慢慢做一些示例進(jìn)行講解。
歡迎關(guān)注、收藏
---END--
VBA中類的解讀及應(yīng)用》教程【10165646】是我推出的第五套教程,目前已經(jīng)是第一版修訂了。這套教程定位于最高級,是學(xué)完初級,中級后的教程。
類,是非常抽象的,更具研究的價值。隨著我們學(xué)習(xí)、應(yīng)用VBA的深入,有必要理解這些抽象的理論知識。對象,類,過程,方法,屬性,事件,接口,接口如何實現(xiàn)等等。掌握了這些理論,不僅對于VBA這種寄生語言的實質(zhì)有所深入的理解,也對自然界的很多事物將同樣有所感悟。目前,這套教程程序文件已經(jīng)通過32位,64位兩種office系統(tǒng)測試。
這套教程共兩冊,八十四講,今后一段時間會給大家陸續(xù)推出修訂后的教程內(nèi)容。今日的內(nèi)容是:VBA中類的解讀及應(yīng)用第十二講:限制復(fù)選選擇(上)
【分享成果,隨喜正能量】沉默,可以讓混亂的心,變得清澈。沉默,是城府,是睿智,是內(nèi)涵;沉默,是最后的清高,也是最后的自由。。
類是VBA的魂,如果理解了類,那么很多VBA的理論會很容易理解。所以我們要理解類,在理解的基礎(chǔ)上掌握它的應(yīng)用。
1) 對于單選這種類型,一共多個答案,如果選擇了一個那么其他的將不被選擇。
2) 對于多選題,可以選擇三個答案,如果選中了三個,那么其他的將不被選擇。
需求分析:
這類需求是很普通的,在一個窗體上有若干個答案,我們要通過類來實現(xiàn)我們的需求,這里將涉及到類的命名,類對象的關(guān)聯(lián),類事件的命名與響應(yīng)。
下面的幾個單元我們講解這個需求的實現(xiàn):
我們先建立一個類模塊(mydati)【注釋:漢語拼音,答題】,并在類模塊中實現(xiàn)事件對象的聲明,事件的過程。
類模塊代碼:
Public WithEvents xuanzhe As MSForms.OptionButton
Public WithEvents yemian As MSForms.UserForm
Private Sub xuanzhe_Click() '類的數(shù)據(jù)改變事件
Dim index As Long
yy=xuanzhe.Name
index=Mid(xuanzhe.Name, 13) '取出OptionButtonN中的數(shù)字N
If yemian.Controls("OptionButton" & index).Value=True Then
Sheets("12.13.14").Cells(1, 1)=yemian.Controls("Label" & index + 1).Caption
For i=1 To 5
If i <> index Then
yemian.Controls("OptionButton" & i).Enabled=False
End If
Next
End If
End Sub
我們看看類模塊的代碼截圖:
【待續(xù)】
今日內(nèi)容回向:
1 類模塊中需要建立的內(nèi)容是什么?
2 WithEvents是聲明什么的?
(待續(xù))
今日內(nèi)容回向:
1 如何理解正則函數(shù)?
2 在窗體的構(gòu)建構(gòu)成中,執(zhí)行了哪些動作?
本講內(nèi)容參考程序文件:VBA-CLASS(1-28).xlsm
我20多年的VBA實踐經(jīng)驗,全部濃縮在下面的各個教程中:
近項目上用到了調(diào)用微信和支付寶的第三方支付接口,因為以前沒用過,所以這次用到了之后總結(jié)一下分享給大家,這里介紹兩種支付方式,即app支付和掃碼支付方式。
一、app支付(這里只介紹java端調(diào)用支付,安卓或ios端自己參考相關(guān)的調(diào)用文檔)
首先可以看一看項目支付流程(圖解)
1. 在頁面上選擇支付方式(微信或支付寶)
2. 由相應(yīng)的客戶端調(diào)用相應(yīng)的支付方式進(jìn)入相應(yīng)的支付頁面(安卓或ios調(diào)用支付接口并進(jìn)入微信或支付寶支付頁面,顯示支付的信息)
3. 輸入密碼進(jìn)行支付
4. 調(diào)用支付結(jié)果接口,來返回支付成功與否
四圖分別是選擇支付方式、微信支付頁面、支付寶支付頁面、微信支付結(jié)果(成功)頁面
也是基本的支付三個步驟。
一、先看微信支付:
在調(diào)用微信支付之前你應(yīng)該已經(jīng)下單成功(即訂單信息入庫成功),這里需要幾個值:
OrderName(訂單名稱),orderNumber(訂單編號,唯一),amount(金額), prepayId(交易會話id)
前三個參數(shù)直接從數(shù)據(jù)庫里獲取。prepayid是什么?可以具體看微信支付文檔,我們可以從下單接口中返回獲得這個會話id并且需要入庫,這個參數(shù)最重要的作用是用于第一次我們沒有支付,但已經(jīng)生成了一個待支付的訂單。這種情況下我們不需要再次去調(diào)用下單接口返回prepayId,因為我們已經(jīng)生成過了這個值
下面看手機端頁面的js代碼:
*請認(rèn)真填寫需求信息,我們會在24小時內(nèi)與您取得聯(lián)系。