vba多个button响应一个事件_VBA代码控制连续区域和非连续区域的触发

73e761a8385753de3342476e1dbb1319.png

大家好,今日继续和大家分享VBA编程中常用的常用“积木”过程代码。这些内容大多是我的经验的记录,来源于我多年的经验。今日分享的是NO.231-NO.232,内容是:

NO. 231:判断连续区域的触发过程

NO. 232:使用Intersect方法和Union方法指定专属区域范围才可以响应触发事件的方法

4b8491983e5b80941c753206619df759.png

VBA过程代码231:判断连续区域的触发过程

Private Sub Worksheet_SelectionChange(ByVal Target As Range)

If Target.Count > 1 Then

If Target(1).Resize(Target.Count).Address = Target.Address Then

MsgBox "可以执行你的以下代码"

Else

Exit Sub

End If

End If

End Sub

代码解析: Target(1).Resize(Target.Count).Address 为以Target(1)扩展后的区域;如果和 Target.Address 一样就可以说明是一列的连续区域了。

备考:利用Resize属性对单元格进行扩张时,是以原单元格为起始点但包括原单元格本身的扩张。Resize属性的语法为:

Range对象.Resize(RowSize,ColumnSize)扩展特定的单元格,返回一个由参数RowSize和ColumnSize指定行列数的单元格区域。

其中:参数RowSize指定新单元格区域的行数。若省略该参数,则新单元格区域的行数与原来相同。Range('A1').Resize(1, 3).Select等价于代码(省略了第一个参数):Range('A1').Resize(, 3).Select都将选择单元格区域A1:C1。

参数ColumnSize指定新单元格区域的列数。若省略该参数,则新单元格区域的列数与原来相同。

6b04cb19ba991b60de28a22a477469cb.png

VBA过程代码232:使用Intersect方法和Union方法指定专属区域范围才可以响应触发事件的方法

Private Sub Worksheet_SelectionChange(ByVal Target As Range)

If Not Application.Intersect(Target, Union(Range("A1:A10"), Range("C1:D10"))) Is Nothing Then

MsgBox "你选择正确,选择的地址是:" & Target.Address(0, 0) & "单元格"

End If

End Sub

代码解析:Union方法是Application对象的方法,可以将两个或多个单元格区域联合起来,生成一个新的单元格区域。Intersect方法也是Application对象的方法,返回两个或多个单元格重叠的部分,以上过程用两种方法指定专属区域范围工作表A1到A10,C1到D10单元格时才可以响应触发事件。从而实现了专属区域的代码精确控制触发事件。

789991e39a921969ce84e13f91c5fe42.png

VBA是利用OFFICE实现自己小型办公自动化的有效手段,我根据自己20多年的VBA实际利用经验,总结了四部VBA学习资料,是我“积木编程”思想的体现。

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

第二:VBA数据库解决方案,是数据处理的专业利器,介绍利用ADO连接ACCDB,EXCEL。

第三:VBA数组与字典解决方案,讲解VBA中的数组和字典的利用。

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

VBA真的非常实用,希望大家掌握这个工具,利用这个工具,让自己在工作中轻松,高效,快乐。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值