整合營銷服務商

          電腦端+手機端+微信端=數據同步管理

          免費咨詢熱線:

          如何用代碼創建類模塊,VBA編程進階學習,千萬別錯過

          如何用代碼創建類模塊,VBA編程進階學習,千萬別錯過

          xcel vba編程進入深水階段,那就對底層的一些代碼構建有一定的了解。

          類模塊就是其重要的一環,可以利用類模塊做一些十分有用的事情。

          其實在VBA實際應用中,離不開類模塊的運用,只有我們并不知道而已。

          每一個代碼之后,或許就應用到類模塊,大多是系統給我們預置完成的一些模塊,看上去并不能很明顯地發現,但它實實在在的存在,并處理著所有的表格功能。

          本節重點講一下,如何利用代碼來創建一個類模塊和刪除一個類模塊。

          然后再給新建的類模塊添加代碼,代碼可以是你想構建的任何功能。

          上圖為本節示例中的部分代碼。

          三個按鈕分別實現不同的功能,下面具體看代碼進行認識,功能都進行了模塊化構建,所以在使用的時候要分清楚什么地使用這些代碼。

          添加類模塊過程:

          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

          調用如上代碼使用下面的按鈕過程:

          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

          具體實現方法仔細看代碼,就會慢慢明白。

          下面列出重點代碼:

          • 添加類模塊:ThisWorkbook.VBProject.VBComponents.Add(vbext_ct_ClassModule)
          • 刪除類模塊:ThisWorkbook.VBProject.VBComponents.Remove "類模塊對象"
          • 添加類模塊代碼:ThisWorkbook.VBProject.VBComponents("類模塊名").CodeModule.AddFromString (CodeString)

          類模塊是一個比較難學習的內容,要多次進行練習,如果很難入門,也不要太著急,如果不是深入編程,進行一些很繁雜的程序處理,基本也用不著。

          但是,如果學會之后,那將是一個很大的進步。

          至于如何利用類模塊來實現一些功能,以后有機會,慢慢做一些示例進行講解。

          歡迎關注、收藏

          ---END--

          VBA中類的解讀及應用》教程【10165646】是我推出的第五套教程,目前已經是第一版修訂了。這套教程定位于最高級,是學完初級,中級后的教程。

          類,是非常抽象的,更具研究的價值。隨著我們學習、應用VBA的深入,有必要理解這些抽象的理論知識。對象,類,過程,方法,屬性,事件,接口,接口如何實現等等。掌握了這些理論,不僅對于VBA這種寄生語言的實質有所深入的理解,也對自然界的很多事物將同樣有所感悟。目前,這套教程程序文件已經通過32位,64位兩種office系統測試。

          這套教程共兩冊,八十四講,今后一段時間會給大家陸續推出修訂后的教程內容。今日的內容是:VBA中類的解讀及應用第十二講:限制復選選擇(上)

          【分享成果,隨喜正能量】沉默,可以讓混亂的心,變得清澈。沉默,是城府,是睿智,是內涵;沉默,是最后的清高,也是最后的自由。。

          第十二講 限制復選選擇(上)

          類是VBA的魂,如果理解了類,那么很多VBA的理論會很容易理解。所以我們要理解類,在理解的基礎上掌握它的應用。

          • 今日課題需求:在做選擇題時

          1) 對于單選這種類型,一共多個答案,如果選擇了一個那么其他的將不被選擇。

          2) 對于多選題,可以選擇三個答案,如果選中了三個,那么其他的將不被選擇。

          需求分析:

          這類需求是很普通的,在一個窗體上有若干個答案,我們要通過類來實現我們的需求,這里將涉及到類的命名,類對象的關聯,類事件的命名與響應。

          下面的幾個單元我們講解這個需求的實現:

          1 類模塊的搭建

          我們先建立一個類模塊(mydati)【注釋:漢語拼音,答題】,并在類模塊中實現事件對象的聲明,事件的過程。

          類模塊代碼:

          Public WithEvents xuanzhe As MSForms.OptionButton

          Public WithEvents yemian As MSForms.UserForm

          Private Sub xuanzhe_Click() '類的數據改變事件

          Dim index As Long

          yy=xuanzhe.Name

          index=Mid(xuanzhe.Name, 13) '取出OptionButtonN中的數字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

          我們看看類模塊的代碼截圖:

          【待續】

          今日內容回向:

          1 類模塊中需要建立的內容是什么?

          2 WithEvents是聲明什么的?

          (待續)

          今日內容回向:

          1 如何理解正則函數?

          2 在窗體的構建構成中,執行了哪些動作?

          本講內容參考程序文件:VBA-CLASS(1-28).xlsm

          我20多年的VBA實踐經驗,全部濃縮在下面的各個教程中:

          近項目上用到了調用微信和支付寶的第三方支付接口,因為以前沒用過,所以這次用到了之后總結一下分享給大家,這里介紹兩種支付方式,即app支付和掃碼支付方式。

          一、app支付(這里只介紹java端調用支付,安卓或ios端自己參考相關的調用文檔)

          首先可以看一看項目支付流程(圖解)

          1. 在頁面上選擇支付方式(微信或支付寶)

          2. 由相應的客戶端調用相應的支付方式進入相應的支付頁面(安卓或ios調用支付接口并進入微信或支付寶支付頁面,顯示支付的信息)

          3. 輸入密碼進行支付

          4. 調用支付結果接口,來返回支付成功與否

          四圖分別是選擇支付方式、微信支付頁面、支付寶支付頁面、微信支付結果(成功)頁面

          也是基本的支付三個步驟。

          一、先看微信支付:

          在調用微信支付之前你應該已經下單成功(即訂單信息入庫成功),這里需要幾個值:

          OrderName(訂單名稱),orderNumber(訂單編號,唯一),amount(金額), prepayId(交易會話id)

          前三個參數直接從數據庫里獲取。prepayid是什么?可以具體看微信支付文檔,我們可以從下單接口中返回獲得這個會話id并且需要入庫,這個參數最重要的作用是用于第一次我們沒有支付,但已經生成了一個待支付的訂單。這種情況下我們不需要再次去調用下單接口返回prepayId,因為我們已經生成過了這個值

          下面看手機端頁面的js代碼:


          1. //微信支付
          2. function wxPay(outTradeNo){
          3. var orderType="0"; //路線 訂單
          4. $.ajax({
          5. url :'<%=basePath%>client/travel/getWXClientPayInfo.do?outTradeNo='+outTradeNo+'&orderType='+orderType,
          6. cache : false,
          7. type : "get",
          8. success : function(data)
          9. {
          10. if(data!=null){
          11. data=jQuery.parseJSON(data);
          12. var u=navigator.userAgent;
          13. var isAndroid=u.indexOf('Android') > -1 || u.indexOf('Adr') > -1; //android終端
          14. var isiOS=!!u.match(/\(i[^;]+;( U;)? CPU.+Mac OS X/); //ios終端
          15. if(isAndroid){
          16. ClientInterface.pay(outTradeNo,data.prepayid,data.noncestr,data.timestamp,data.sign,orderType);
          17. }

          主站蜘蛛池模板: 影院无码人妻精品一区二区| 国产精品日本一区二区在线播放| 国产激情视频一区二区三区| 国产成人精品日本亚洲专一区| 亚洲国产一区国产亚洲 | 国产成人一区二区三区视频免费 | 亚洲欧洲专线一区| 精品成人av一区二区三区| 在线精品亚洲一区二区| 国产AV午夜精品一区二区三区| 国产一区二区三区小说| 无码国产精品一区二区免费3p| 亚洲国产av一区二区三区丶| 国产伦精品一区二区三区免费迷| 国产激情一区二区三区| 国偷自产av一区二区三区| 亚洲日韩精品国产一区二区三区 | 日本免费一区二区三区 | 亚洲一区二区三区无码中文字幕| 波多野结衣一区二区三区| 亚洲精品伦理熟女国产一区二区| 精品一区二区久久久久久久网精| 一区二区在线视频观看| 99久久精品国产一区二区成人 | 久久中文字幕无码一区二区| 国产婷婷色一区二区三区| 日韩综合无码一区二区| 精品性影院一区二区三区内射 | 狠狠做深爱婷婷综合一区| 精品少妇人妻AV一区二区三区| 中文字幕Av一区乱码| 国精产品一区一区三区免费视频 | 香蕉久久ac一区二区三区| 亚洲视频一区在线观看| 精品乱码一区二区三区在线| 中文字幕在线一区二区三区| 精品国产伦一区二区三区在线观看| 国偷自产视频一区二区久| 中文字幕一区二区视频| 国产福利91精品一区二区| 一区二区三区四区在线播放 |