VBA中类的解读及应用第十三讲:限制复选选择,窗体模块的搭建

news2025/1/19 11:06:37

《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.coloradmin.cn/o/1894692.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

第十五章 Qt的QGraphics View绘图框架详解

目录 一、视图、场景、图形项 1、Graphics View 绘图架构 1.1、图形项 GraphicsItem 1.2、场景 QGraphicsScene 1.3、视图 QGraphicsView 2、图形项、场景、视图的坐标系 3、Graphics View 基础练习 二、使用自定义视图处理鼠标事件 1、添加自定义视图类 2、使用自定…

【python基础】—calendar模块

文章目录 前言一、calendar模块方法1.firstweekday()2.setfirstweekday(firstweekday)3.isleap(year)4.leapdays(y1, y2)5.weekday(year, month, day)6.monthrange(year, month)7.weekheader(n)8.monthcalendar(year, month)9.prmonth(theyear, themonth, w0, l0)10.prcal(year…

Java WebService记

Web Services开发 常用的 Web Services 框架有 Apache Axis1 、 Apache Axis2 、 Apache CXF ,而 Apache Axis1 已经逐渐被淘汰所以本文不会讨论,重点关注 Apache Axis2 及 Apache CXF 。 Apache Axis2 在IDEA中新建 Axis2Demo 项目后右键选择 添加框架…

Access,Trunk,Hybrid网络设备链接类型详解

带着问题找答案:网络链路上的数据包怎么看,是否携带vlan-id如何看,以及如何设计链接类型满足用户要求,请看如下解析。 第一种:链接类型access 无标记数据帧 第二种:链接类型trunk 第三种&#xf…

java前后端加密解密crypto-js_java crypto

} let srcs CryptoJS.enc.Utf8.parse(word); var encrypted CryptoJS.AES.encrypt(srcs, key, { iv: iv, mode: CryptoJS.mode.CBC, padding: CryptoJS.pad.ZeroPadding }); return CryptoJS.enc.Base64.stringify(encrypted.ciphertext); } /** 1. AES 解密 :字符…

怎么用AI合成PPT?这5款风靡全球的AIPPT软件一定要知道!

当下我们已进入信息过载的时代,每天有无数的信息试图争夺我们的注意力,与此同时,我们也需要向别人展示和呈现信息,这就要求我们能够以最低的成本,在短时间内引起对方的注意,这其中最常用到的工具非PPT莫属。…

融资融券利率怎么计算,两融交易开通条件和操作流程

融资融券利率 融资融券的利率没有固定的数额,现在融资利率最低是4%~5%,专项融券利率2.99%起,公共券源利率9.35%。 融资利息计算 融资利息是指投资者借入资金进行买入股票时需要支付的利息。 计算公式为:融资利息 融资金额 融…

《ClipCap》论文笔记(下)

原文出处 [2111.09734] ClipCap: CLIP Prefix for Image Captioning (arxiv.org) 原文翻译 接上篇 《ClipCap》论文笔记(上)-CSDN博客 4. Results Datasets.我们使用 COCO-captions [7,22]、nocaps [1] 和 Conceptual Captions [33] 数据集。我们根…

概率论与数理统计_上_科学出版社

contents 前言第1章 事件与概率1.1 随机事件与样本空间1.1.1 样本空间1.1.2 随机事件1.1.3 事件之间的关系与运算 1.2 概率的三种定义及其性质1.2.1 概率的统计定义1.2.2 概率的古典定义1.2.3 概率的几何定义1.2.4 概率的性质 1.3 常用概型公式1.3.1 条件概率计算公式1.3.2 乘法…

【设计模式】设计模式学习线路与总结

文章目录 一. 设计原则与思想二. 设计模式与范式三. 设计模式进阶四. 项目实战 设计模式主要是为了改善代码质量,对代码的重用、解耦以及重构给了最佳实践,如下图是我们在掌握设计模式过程中需要掌握和思考的内容概览。 一. 设计原则与思想 面向对象编…

功能详解-电商接口丨电商API

随着电商平台各类机制日益成熟,电商接口逐渐被大家所熟知,淘宝、天猫、京东、拼多多、抖店、快手、小红书这些都是主流的电商平台,为了提升电商管理系统的效率,开发者可以通过电商接口将多个电商平台的数据和功能集成。 电商接…

海外短剧CPS推广分佣系统平台讲解,他和短剧播放平台有啥区别?

首先来讲讲什么是海外短剧系统?什么是海外短剧cps系统?这俩有何区别? 海外短剧系统 顾名思义:就是做一套海外短剧系统,把剧放在自己的系统内,让用户来充值,充值的钱全部都是我自己的&#xff…

【人工智能】--生成对抗网络

个人主页:欢迎来到 Papicatch的博客 课设专栏 :学生成绩管理系统 专业知识专栏: 专业知识 文章目录 🍉引言 🍉GAN 的基本原理 🍈生成器(Generator) 🍈判别器&…

[数据集][目标检测]刀具匕首持刀检测数据集VOC+YOLO格式8810张1类别

数据集格式:Pascal VOC格式YOLO格式(不包含分割路径的txt文件,仅仅包含jpg图片以及对应的VOC格式xml文件和yolo格式txt文件) 图片数量(jpg文件个数):8810 标注数量(xml文件个数):8810 标注数量(txt文件个数):8810 标注…

超详细!大模型面经指南(附答案)

目录 大模型(LLMs)基础面 1. 目前 主流的开源模型体系 有哪些? 2. prefix LM 和 causal LM 区别是什么? 3. 涌现能力是啥原因? 4. 大模型LLM的架构介绍? 大模型(LLMs)进阶面 1. l…

mysql:部署MySQL 8.0 环境

mysql网址:MySQL 点击 MySQL Community Server 选择合适的版本 选择8.0版本 下载完成,点击mysql-installer-community-8.0.26.0.msi文件,打开安装向导。 选择自定义安装类型 打开“Select Products” 窗口,可以定制需要安装的产…

Teamviewer删除可信任设备

目前基本上主流的远程连接软件都有限制,要么收费; Teamviewer可信任设备有限,超出限制就会提示错误,需要删除多余的设备才能登陆账号! 需要登陆这个网站 Teamviewer Management console,才能修改&#xff…

高级IO_多路转接之Poll

文章目录 前言一、poll二、poll使用步骤总结 前言 上一章我们学习了select,但是select作为早期的多路转接接口,缺点十分明显,于是又出现poll和epoll等接口,今天我们就来学习一下poll的使用 提示:以下是本篇文章正文内…

7.4总结

今天写了几道题目 最近,一年级学生马克西姆学习了科拉兹猜想,但他在讲课时没有太注意,所以他认为猜想中提到了以下过程: 有一个变量 $$$x$$$ 和一个常数 $$$y$$$ 。下面的操作要执行 $$$k$$$ 次: - 将 $$$x$$$ 增加…

MySQL资讯|2024年MySQL第一个长期支持版本8.4发布

📫 作者简介:「六月暴雪飞梨花」,专注于研究Java,就职于科技型公司后端工程师 🏆 近期荣誉:华为云云享专家、阿里云专家博主、腾讯云优秀创作者、ACDU成员 🔥 三连支持:欢迎 ❤️关注…