vba鼠标停留触发的事件_EXCEL工作表中事件的监听

(接上讲)

大家好,我们今天继续讲解Sheets("51")的工作表代码,在上一讲中,我讲了代码头部的声明,今日讲解代码部分。

3 Private Sub Worksheet_Activate()

Set MyS = New mysheet

Set MyS.mySht = Sheets("51")

End Sub

上面的这段代码发生在工作表的Activate事件中,当工作表处于Activate状态的时候发生两个动作,其一是Set MyS = New mysheet,也就是将类mysheet实例化为MyS,这个时候MyS是类mysheet的一个肉身,具有类的属性和方法,可以完成类的一系列使命,第二个动作是Set MyS.mySht = Sheets("51"),这句代码是什么意思呢?我可以解释的直白一点,就是将响应类事件的对象mySht关联上Sheets("51")这个工作表,也就是说通过这个关联可以让类的对象监听到Sheets("51")的各种改变。

4 Private Sub Worksheet_Deactivate()

Set MyS = Nothing

End Sub

上面的代码是当工作表不处于活动状态时将Set MyS = Nothing,是一个释放内存的过程。

5 Private Sub MyS_mySelectRan()

MsgBox "你单击了A列单元格"

End Sub

这个事件就是mySelectRan的过程,这个过程中会弹出一个对话框"你单击了A列单元格",那么在什么时候执行这个过程呢?就是当类模块监听到Mid(Target.Address, 2, 1) = "A"时触发RaiseEvent mySelectRan,类模块中的代码如下:

If Mid(Target.Address, 2, 1) = "A" Then

RaiseEvent mySelectRan

End If

好了,关于这个工作表的代码就讲解到这里,我们看看代码的运行过程。我们让工作表Sheets("51")处于焦点状态,这个时候MyS.mySht = Sheets("51"),工作表Sheets("51")是处于被监听的状态。当我们点击工作表A列的单元格时,mySht就会监听到。这个时候就会触发mySelectRan事件,在这个事件中会弹出一个MsgBox,我们看下面的结果:

1dd6dc6dffef221fe92b19f18fb4bad6.png

讲解到这里,细心的朋友会提出一个非常好的问题,就是触发mySelectRan事件的前提是工作Sheets("51")处于一种被监听的状态,而这种被监听状态的前提是Set MyS.mySht = Sheets("51"),就是让mySht和Sheets("51")相关联,而这种关联发生在工作表Sheets("51")发生Activate事件,那么如何让工作表Sheets("51")发生Activate事件呢?

我们可以利用让工作薄文件打开时激活的是其他工作表的方式,这样我们需要在thisworkbook中加入下面的代码:

bd5b8cd5455275dc9a0d737c4142ff60.png

这样保证我们在打开工作薄时进入了"sheet1"工作表。当进入Sheets("51")时这个工作表要经历一个activate事件。

好了,关于工作表的监听第一部分内容就讲解到这里,这部分实现了单击A列会弹出提示的功能,我们在后续的讲解中会继续展开,深入地讲解。

今日内容回向:

1 本讲讲解了将类实例化的过程,用的是什么语句?

2 本讲将类进行了实例化,发生在哪个过程中?

3 类失去肉身发生在哪个过程中?标志是什么?

备注:本讲代码参考程序文件:VBA-CLASS(下51-56).xlsm

8339d8da085520d1ed93bd325c31ec4a.png

在取代OFFICE新的办公软件没有到来之前,谁能在数据处理方面做到极致,谁就是王者。其中登峰至极的技能非VBA莫属!众鸟高飞尽,孤云独去闲。相看两不厌,只有敬亭山。

学习VBA是个过程,这个过程是自己忍受孤独的过程。

"水善利万物而不争",你看她绵绵密密,微处则无声,巨则汹涌。学习亦如此,把握现在,为达千里,需要默默耕耘,知道什么是自己所需要的,不要蜷缩在一小块自认为天堂的世界里,待到暮年时去自欺欺人。要在当下,用一颗充满生机的心灵,努力提高自己,这才是进取。越是有意义的事情,困难会越多。愿力决定始终,智慧决定成败。不管遇到什么,都是风景。看淡纷争,看轻得失。一杯茶,满也好,少也好,不要去计较;浓也好,淡也好,其中都有值得品的味道。去感悟真实的时间,静下心,多学习,积累福报。而不是天天混日子,也不是天天熬日子。一切众生的心都在变化,像时间一样,永远不会停留,把握现在就是福报。

VBA是利用Office实现自己小型办公自动化的有效手段,我记得20年前自己初学VBA时,那时的资料甚少,只能看源码自己琢磨,真的很难。20年过去了,为了不让学习VBA的朋友重复我之前的经历,我根据自己多年VBA实际利用经验,推出了五部VBA专门教程,回向给需要学习的朋友:

第一套:VBA代码解决方案 是VBA中各个知识点的讲解,覆盖绝大多数的VBA知识点,初学必备;

第二套:VBA数据库解决方案 数据库是数据处理的专业利器,教程中详细介绍了利用ADO连接ACCDB和EXCEL的方法和实例操作。

第三套:VBA数组与字典解决方案 数组和字典是VBA的精华,字典是VBA代码水平提高的有效手段,值得深入的学习。

第四套:VBA代码解决方案之视频 是专门面向初学者的视频讲解,可以快速入门,更快的掌握这门技能。

第五套:VBA中类的解读和利用 这是一部高级教程,讲解类的虚无与肉身的度化,可以对促进自己理论的提高。

学习的过程也是修心的过程,修一个平静的心。在代码的世界中,心平静了,心情好了,身体自然而然就好。心静则正,内心里没有那么多邪知邪见,也就没有那么多妄想。在平静中积累自己的财富。我的上述教程是我多的经验的传递,大家可以根据1,3,2,5或者是4,3,2,5的顺序逐渐深入的逐渐学习。

1dab09a55b009c86cea706b6bf600c82.png

最后将一阙词送给致力于VBA学习的朋友:

浮云掠过,暗语无声,

唯有清风,惊了梦中啼莺。

望星,疏移北斗,

奈将往事雁同行。

阡陌人,昏灯明暗,忍顾长亭。

多少VBA人,

暗夜中,悄声寻梦,盼却天明。

怎无凭!

分享成果,随喜正能量

  • 3
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值