VBA中類的解讀及應用第十三講:限制復選選擇,窗體模塊的搭建

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

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

這套教程共兩冊,八十四講,今后一段時間會給大家陸續推出修訂后的教程內容。今日的內容是:VBA中類的解讀及應用第十三講:限制復選選擇,窗體模塊的搭建195a9c2b673bfd64b63ff9aded860898.jpeg

【分享成果,隨喜正能量】專注地做一件事,做到極致,勝過敷衍地做很多事。不求多,但求精,不求散,但求專。每個人的時間和精力都是有限的,專注于某個領域,沉得住氣,靜得下心,充分發揮自己的潛能,持續深耕,才能有所作為。。

第十三講 限制復選選擇(中)

大家好,我們今日繼續講解類與類模塊的知識,今日講解限制復選選擇第二部分,在上講中,我們講了這個問題類模塊的構建,我們在類模塊中搭建了一個mytadi的類,在這個類中,我們聲明了兩個相應類事件的對象,一個是xuanzhe類對象,一個是yemian 的類事件。同時在類中,我們還給出了xuanzhe類對象所響應的事件。

3 窗體模塊的搭建

我們這講講解如何把窗體的對象關聯到聲明了的響應類事件的對象.如果僅僅是WithEvents聲明了響應類事件的對象,不做關聯,真的沒有任何意義。只有關聯到了窗體對象,那么才可以在代碼中讓這些窗體對象步調一致,聽從指揮。

我們先搭建一個窗體,上面有5個選擇按鈕,分別為OptionButton1到OptionButton5,這5個選擇的CAPTION對應ABCDE,同時按鈕對應5個選擇項目,在窗體的最下邊增加一個重置的按鈕,在選擇錯誤的時候,可以重置。

8e69158a7f6ea5706edadd1f0226f6b8.jpeg

我們看窗體的代碼:

Dim kuang() As New mydati

Private Sub CommandButton1_Click()

For i = 1 To 5

Controls("OptionButton" & i).Value = False

Controls("OptionButton" & i).Enabled = True

Next

End Sub

Private Sub UserForm_Initialize()

For Each myctl In Me.Controls

If TypeName(myctl) = "OptionButton" Then

m = m + 1

ReDim Preserve kuang(1 To m) '創建一個新的mydati類對象

Set kuang(m).xuanzhe = myctl '設置新類和OptionButton(i)控件創建關聯

Set kuang(m).yemian = Me '類窗體也和當前窗體建立關聯

End If

Next

End Sub

代碼截圖:

946a33c6027afef947dbb3ad397edf48.jpeg

4 窗體模塊代碼的講解

1) 上述代碼首先聲明一個類:Dim kuang() As New mydati,這個類是我們在類模塊中已經命名了的,就是將類mydati 實例化為kuang().此處是一個動態數組。

2) Private Sub UserForm_Initialize()

For Each myctl In Me.Controls

If TypeName(myctl) = "OptionButton" Then

m = m + 1

ReDim Preserve kuang(1 To m) '創建一個新的mydati類對象

Set kuang(m).xuanzhe = myctl '設置新類和OptionButton(i)控件創建關鍵

Set kuang(m).yemian = Me '類窗體也和當前窗體建立關聯

End If

Next

End Sub

上述代碼是窗體的構建函數,在窗體的構建過程中,對每一個控件進行遍歷,如果是OptionButton類型的控件,那么我們就將這個控件和新類相關聯。我們主要的目的是讓類對象來響應事件。

3) 對于重置按鈕,但按下時會響應事件

For i = 1 To 5

Controls("OptionButton" & i).Value = False

Controls("OptionButton" & i).Enabled = True

Next

也就是說將每個OptionButton處于待選擇狀態。

為了能執行答題的界面,我們還要在公用模塊中寫入下面的代碼,讓答題時彈出答題界面.

5554271fee33b0d93e2e129b9d610868.jpeg

今日內容回向:

1 類模塊的構建函數中做了什么工作?

2 如何把控件和類事件的聲明對象相關聯?

(待續)

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

25b572cb542e3cd3aae98779268e926a.jpeg

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

551d8d87379f82718f31ed006a13811d.jpeg


本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/40651.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/40651.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/40651.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

02-部署LVS-DR群集

1.LVS-DR工作原理 LVS-DR模式,Director Server作為群集的訪問入口,不作為網購使用,節點Director Server 與 Real Server 需要在同一個網絡中,返回給客戶端的數據不需要經過Director Server 為了響應對整個群集的訪問,…

Java WebService記

Web Services開發 常用的 Web Services 框架有 Apache Axis1 、 Apache Axis2 、 Apache CXF ,而 Apache Axis1 已經逐漸被淘汰所以本文不會討論,重點關注 Apache Axis2 及 Apache CXF 。 Apache Axis2 在IDEA中新建 Axis2Demo 項目后右鍵選擇 添加框架…

每天10個js面試題(一)

1.js基本數據類型? JavaScript 共有八種數據類型,分別是Undefined、Null、Boolean、Number、String、Object、Symbol、BigInt。其中 Symbol 和 BigInt 是 ES6 中新增的數據類型 2.let、const、var的區別? let和const有暫時性死區&#xff0…

開源模型應用落地-LangChain高階-智能體探究-agent類型(一)

一、前言 大模型具有非常強大的功能,可以解答疑問、撰寫報告和文檔、總結內容、進行翻譯等各種日常工作任務。然而,大模型還可以應用于更多的場景,發揮出更強大的作用。 通過智能體,我們可以實現許多有價值的事情,比如:在日常生活中,我們能借助智能體實現智能家居的自動化…

【滲透入門】SQL注入

聲明:本文檔或演示材料僅供教育和教學目的使用,任何個人或組織使用本文檔中的信息進行非法活動,均與本文檔的作者或發布者無關。 文章目錄 什么是sql注入sql注入舉例防御方式練習靶場 什么是sql注入 SQL注入是一種網絡安全漏洞,攻…

【Android源碼】Gerrit安裝

前言 如果你打開 https://android.googlesource.com/platform/manifest,就會發現,google官方管理Android源碼,使用的是Gerrit。Android系統源碼是非常大的,用Git肯定是不適合。對于大型項目,得用Gerrit,今…

NoSQL之Redis高可用與優化

一、Redis高可用 在web服務器中,高可用是指服務器可以正常訪問的時間,衡量的標準是在多長時間內可以提供正常服務(99.9%、99.99%、99.999%等等)。 但是在Redis語境中,高可用的含義似乎要寬泛一些,除了保證…

二叉樹的鏈式訪問 與 二叉樹專題

目錄 二叉樹的前、中、后序遍歷求二叉樹第K層節點的個數二叉樹查找值為x的節點leetcode相同的樹對稱二叉樹二叉樹的前序遍歷另一棵子樹牛客 二叉樹的遍歷 二叉樹的前、中、后序遍歷 1.前序遍歷:先訪問根節點,再訪問左子樹,最后訪問右子樹 根…

【備忘】fastadmin 如何獲取列表選中行的pk

去官方搜沒搜出來,還得是萬能的網友厲害。 //獲取選中項 $(document).on("click", ".btn-selected", function () {// 獲取選中項idsconsole.log(JSON.stringify(Table.api.selectedids(table)));// 獲取選中項所有數據console.log(JSON.strin…

輸入一個整數n,輸出n的約數為質數的數?兩個問題n的約數問題和n的質數問題

輸入一個整數n,輸出n的約數為質數的數? 一.首先解決n的質數的問題(1)枚舉法(2)埃氏篩 二.解決n的質數約數問題 一.首先解決n的質數的問題 (1)枚舉法 考慮質數的定義:在大…

conda中創建環境并安裝tensorflow1版本

conda中創建環境并安裝tensorflow1版本 一、背景二、命令三、驗證一下 一、背景 最近需要使用tensorflow1版本的,發個記錄! 二、命令 conda create -n tf python3.6 #創建tensorflow虛擬環境 activate tf #激活環境,每次使用的時候都…

理解策略梯度方法:從REINFORCE到PPO

今年2月的時候,導師突然告訴我Ron William離世了。他算是我導師的 a life time friend,關系很好,我做畢業論文的時候,他還來參與了論文的答辯。Ron是一個很友善的老頭,和他在強化學習領域的影響力比起來,本…

汽車信息安全--數據安全:圖像脫敏

General 隨著車聯網的發展,汽車越來越智能化,就像是一部“裝著四個輪子的手機”。 有人說,智能手機就如同一部竊聽器,無論你開機或者關機,它都會無時不刻地監聽著用戶的一舉一動。 可想而知,智能車輛上…

馬工程刑法期末復習筆記重點2

馬工程刑法期末復習筆記重點2

SpringBoot 參數校驗

參數校驗 引入springvalidation依賴 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-validation</artifactId> </dependency>參數前添加Pattern public Result registry(Pattern(regexp &qu…

Java面向對象練習(2.商品類)(2024.7.4)

商品類 package Supermarket20240704;public class Commodity {private String name;private double price;private int inventory;public Commodity(){};public Commodity(String name, double price, int inventory){this.name name;this.price price;this.inventory inv…

Java核心技術【十九】Iterator與增強for循環

Java中的Iterator與增強for循環 在Java編程中&#xff0c;迭代是處理集合元素的一種常見操作。Java提供了多種迭代集合元素的方式&#xff0c;其中最常用的兩種是Iterator和增強for循環&#xff08;也稱為“for-each”循環&#xff09;。本文將深入探討這兩種迭代方式的特性和…

CLAM用于弱監督WSI分析

計算病理學&#xff08;computational pathology&#xff09;下的深度學習方法需要手動注釋大型 WSI 數據集&#xff0c;并且通常存在領域適應性和可解釋性較差的問題。作者報告了一種可解釋的弱監督深度學習方法&#xff0c;只需要WSI級標簽。將該方法命名為聚類約束注意力多實…

Perl 格式化輸出:提升代碼可讀性的技巧

引言 Perl 是一種功能強大的腳本語言&#xff0c;廣泛用于文本處理、系統管理、網絡編程等多個領域。在 Perl 編程中&#xff0c;代碼的格式化輸出不僅有助于提升代碼的可讀性&#xff0c;還能增強程序的用戶體驗。本文將詳細介紹如何在 Perl 中實現代碼的格式化輸出。 Perl …

【HarmonyOS4學習筆記】《HarmonyOS4+NEXT星河版入門到企業級實戰教程》課程學習筆記(二十一)

課程地址&#xff1a; 黑馬程序員HarmonyOS4NEXT星河版入門到企業級實戰教程&#xff0c;一套精通鴻蒙應用開發 &#xff08;本篇筆記對應課程第 31 節&#xff09; P31《30.數據持久化-關系型數據庫》 上一節中學習了使用用戶首選項的方式實現數據持久化&#xff0c;但用戶首…