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.mzph.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 项目后右键选择 添加框架…

【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.前序遍历:先访问根节点,再访问左子树,最后访问右子树 根…

conda中创建环境并安装tensorflow1版本

conda中创建环境并安装tensorflow1版本 一、背景二、命令三、验证一下 一、背景 最近需要使用tensorflow1版本的,发个记录! 二、命令 conda create -n tf python3.6 #创建tensorflow虚拟环境 activate tf #激活环境,每次使用的时候都…

汽车信息安全--数据安全:图像脱敏

General 随着车联网的发展,汽车越来越智能化,就像是一部“装着四个轮子的手机”。 有人说,智能手机就如同一部窃听器,无论你开机或者关机,它都会无时不刻地监听着用户的一举一动。 可想而知,智能车辆上…

马工程刑法期末复习笔记重点2

马工程刑法期末复习笔记重点2

CLAM用于弱监督WSI分析

计算病理学(computational pathology)下的深度学习方法需要手动注释大型 WSI 数据集,并且通常存在领域适应性和可解释性较差的问题。作者报告了一种可解释的弱监督深度学习方法,只需要WSI级标签。将该方法命名为聚类约束注意力多实…

【HarmonyOS4学习笔记】《HarmonyOS4+NEXT星河版入门到企业级实战教程》课程学习笔记(二十一)

课程地址: 黑马程序员HarmonyOS4NEXT星河版入门到企业级实战教程,一套精通鸿蒙应用开发 (本篇笔记对应课程第 31 节) P31《30.数据持久化-关系型数据库》 上一节中学习了使用用户首选项的方式实现数据持久化,但用户首…

微机原理 选择题

D C MOV、PUSH、POP、XLAT(查表)、IN、OUT不影响标志位 D B D C D C D B 1. (单选题, 5分)8位无符号数(字节)表示的数值范围是( ), 16位无符号数(字)表示的数值范围是( )。 A. 0~128 0~32768B. 0~255 0~655…

Vscode快捷键崩溃

Vscode快捷键崩溃 Linux虚拟机下使用vscode写代码【ctrlA,CtrlC,CtrlV】等快捷键都不能使用,还会出现“NO text insert“等抽象的指令,问题就是不知道什么时候装了一个VIM插件,让他滚出电脑》》》

使用 pyecharts 渲染成图片程序报错: echarts is not defined问题处理

背景 之前写的使用 snapshot_selenium 来保存pyeacharts渲染成的网页截图,可以正常运行。程序搁置了半年,不知道动了电脑哪里,再次运行程序时,程序开始报错:JavascriptException: javascript error: echarts is not d…

【SQL】已解决:SQL分组去重并合并相同数据

文章目录 一、分析问题背景二、可能出错的原因三、错误代码示例四、正确代码示例五、注意事项 已解决:SQL分组去重并合并相同数据 在数据库操作中,数据的分组、去重以及合并是常见需求。然而,初学者在编写SQL语句时,可能会遇到一…

正弦波与单位圆关系的可视化 包括源码

正弦波与单位圆关系的可视化 包括源码 flyfish 正弦波与单位圆的关系 正弦波可以通过单位圆上的点在直线(通常是 y 轴)上的投影来表示。具体来说,考虑一个单位圆,其半径为 1,圆心在原点。我们可以通过旋转一个角度 …

【全网最全流程+所有代码】企业微信回调联调,开通企微回调和收到企微回调

流程图: 只是这里的消息回调,仅作为提示,群内有消息了。不是具体的消息,而是类似这样的结构,: 如果需要获取消息,还需要拉取企微群内消息方法,这个后续再更新。 好了,我们开始吧。 开启消息回调和接收消息回调,地址是一样的,只是 开启消息回调,get请求, 接受消…

人工智能在日常生活中的十大应用:从医疗到智能家居

人工智能已成为当今人类日常生活的重要组成部分,无论您是否意识到,它几乎在所有场景中都能提供帮助。每次您进行网络搜索、在线预订旅行、接收来自京东等购物平台的产品推荐又或是打开您的新浪、抖音时,都能看到影子,这些只是一些…

JAVA案例模拟电影信息系统

一案例要求: 二具体代码(需要在同一个包下创建三个类) Ⅰ:实现类 package 重修;import java.util.Random; import java.util.Scanner;public class first {public static void main(String[] args) {javabean[]moviesnew javabean[4];movies[0] new ja…

加密与安全_ Jasypt (Java Simplified Encryption)不完全指北

文章目录 官网功能概述Code附 官网 http://www.jasypt.org/ 功能概述 Jasypt 是一个 Java 库,它允许开发人员以最小的努力添加基本的加密功能,并且不需要深入了解密码学的工作原理。 高安全性、基于标准的加密技术,适用于单向和双向加密。…

AIGC对设计师积极性的影响

随着科技的迅猛发展,生成式人工智能(AIGC)工具正逐渐深入设计的每个角落,对设计师的工作方式和思维模式产生了深远的影响。AIGC不仅极大提升了设计师的工作效率,更激发了他们的创新思维,为设计行业带来了翻…