如何让窗体记住你选择的复选框的值?

文摘   教育   2024-10-08 19:50   广东  
你在使用窗体的时候有没有遇到这样的情况?在一个窗体中,你勾选了某个复选框的值,但是下一次打开窗体时,他又变回去初始状态了。那么如何让窗体记住我们勾选的状态呢?
我们来先来看看效果:注意看看每次打开窗体时的复选框勾选状态

通过以上动图,我们可以看到,我们每次更改复选框勾选状态后,下次再打开窗体,窗体还是保持在我们上次更改时的状态,那么这个效果怎么做的呢?下面我们来看看代码:
我们双击窗体,在里面写入以下代码

Private Sub CheckBox1_Change()    Call 修改(Me.CheckBox1.Value)End SubPrivate Sub CommandButton1_Click()    Unload MeEnd SubPrivate Sub UserForm_Initialize()    Me.CheckBox1.Value = TrueEnd Sub

然后创建一个模块,在模块中写入以下代码:

Sub 修改(a)    Dim StartLine        With ThisWorkbook.VBProject.VBComponents("UserForm1").CodeModule            StartLine = .ProcBodyLine("UserForm_Initialize", vbext_pk_Proc)            .ReplaceLine StartLine + 1, "Me.CheckBox1.Value = " & a        End WithEnd SubSub test()    UserForm1.ShowEnd Sub

以上代码都不难,本文主要来讲解以下制作思路以及代码逻辑。

首先,我们要在窗体打开时决定复选框是否勾选,那么,在窗体的初始化事件中,我们就应该有一个关于复选框赋值的代码,于是就有了以下代码

Private Sub UserForm_Initialize()    Me.CheckBox1.Value = TrueEnd Sub

其次,当我们的复选框的的值改变时,我们需要修改初始化时,复选框赋的初始值。于是就有了以下代码

Private Sub CheckBox1_Change()    Call 修改(Me.CheckBox1.Value)End Sub

如上代码,我们需要写一个能够自动修改的过程,并将复选框改变后的值作为传递参数。

下面我们来写修改过程的代码:

Sub 修改(a)    Dim StartLine    With ThisWorkbook.VBProject.VBComponents("UserForm1").CodeModule        StartLine = .ProcBodyLine("UserForm_Initialize", vbext_pk_Proc)        .ReplaceLine StartLine + 1, "Me.CheckBox1.Value = " & a    End WithEnd Sub

在模块中写入以上代码,它的意思是修改UserForm1模块中UserForm_Initialize中第一行的代码,具体要修改第几行,我们看可以根据实际情况来定,更灵活一点的,我们可以利用循环加判断来定位需要修改的行。

最后,我们加入关闭窗体的代码

Private Sub CommandButton1_Click()    Unload MeEnd Sub

以及打开窗体的过程

Sub test()    UserForm1.ShowEnd Sub
这个让窗体记住选择的复选框的值的效果也就完成了,通过这个案例我们可以知道,即使是简单的代码,也可以通过灵活的思路实现我们之前觉得很难实现的功能,学习代码的过程重要的还是需要多实践。

好了,本期教程就到这里啦,走过路过的点个关注分享一下吧,谢谢啦,如果你是一个VBA小白,想要了解该如何开始学习VBA,建议看看以下文章

Excel VBA学习路线知识框架梳理(小白VBA入门必看-建议收藏)

求关注-求星标-求点赞-求看-求分享
最近创建了一个VBA学习交流群,如有需要进群可以添加微信 jaresfzz,或者扫描以下二维码,备注进群

Excel应用教程
主要提供Excel vba,函数,图表,数据透视表,pq,Js等教程
 最新文章