失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > VBA代码轻松实现鼠标点击位置不同时 触发的事件也不同

VBA代码轻松实现鼠标点击位置不同时 触发的事件也不同

时间:2021-03-19 11:25:26

相关推荐

VBA代码轻松实现鼠标点击位置不同时 触发的事件也不同

大家好,我们今日继续讲解VBA代码解决方案的第114讲内容: 在工作表事件中,如何根据Target参数的不同,实现不同触发过程。

在工作表的SelectionChange事件中,参数Target代表新选定的区域。在实际应用中可以使用Target参数将触发工作表事件的区域限制在一定的范围内,如下代码

Private Sub Worksheet_SelectionChange(ByVal Target As Range)

If Target.Address(0, 0) = "A1" Then

MsgBox "你好,你选种了A1单元格"

End If

End Sub

代码解析:当选择工作表A1单元格时显示一个消息框。

第2行代码使用Address属性返回所选单元格的区域引用,当返回的区域引用是"A1"时触发SelectionChange事件,显示一个消息框。

为了更深入的了解整个事件的过程,我们需要对上面代码的意义再深入的理解,我之前讲过,我的文章每一讲都是一个积木。供大家利用。作为使用者要弄懂每块积木的意义,才能利用得心应手,只是一知半解很难达到灵活应用的目的。

有的朋友可能注意到了:上面的代码中Target.Address(0, 0),为什么是这种写法呢?这里给大家实测讲解一下,如下代码:

Private Sub Worksheet_SelectionChange(ByVal Target As Range)

MsgBox "Target.Address: " & Target.Address & Chr(13) _

& "Target.Address(0,0): " & Target.Address(0, 0)

End Sub

我们实测一下:代码窗口

运行:

当我点击"H7"时 Target.Address =$h$7 而 Target.Address(0, 0) ="H7"明白了吧,一个是相对引用,一个是绝对引用。

对于一个单元格的Address属性,我再做下面的讲解:

Expression.Address(RowAbsolute,ColumnAbsolute,ReferenceStyle,External,RelativeTo)

其中:

a) Expression 一个表示 Range 对象的变量。

b) RowAbsolute 可选 Variant 如果为 True,则以绝对引用返回引用的行部分。默认值为 True。

c) ColumnAbsolute 可选 Variant 如果为 True,则以绝对引用返回引用的列部分。默认值为 True。

d) ReferenceStyle 可选 XlReferenceStyle 引用样式。 默认值为 xlA1。

e) External 可选 Variant 如果为 True,则返回外部引用。如果为 False,则返回本地引用。默认值为 False。

f) RelativeTo 可选 Variant 如果 RowAbsolute 和 ColumnAbsolute 为 False ,并且 ReferenceStyle 为 xlR1C1 ,则必须包括相对引用的起始点。此参数是定义起始点的 Range 对象。

下面我们看实例应用:

使用单元格的Address属性可以将触发条件限制在固定的区域内,例如,当我们单击A列的单元格时,弹出录入对话框1,当点击B列单元格时,弹出对话框2,这两个对话框是不同的录入模式,该怎么处理呢?

代码:

Private Sub Worksheet_SelectionChange(ByVal Target As Range)

If Left(Target.Address(0, 0), 1) = "A" Then

UserForm1.Show

End If

If Left(Target.Address(0, 0), 1) = "B" Then

UserForm2.Show

End If

End Sub

代码截图:

运行,点击A列:

点击B列:

这样,当你鼠标点击的位置不同,弹出的人机对话框也是不同的,实现了不同的数据录入模式。

今日内容回向:

1. 如何实现根据Target参数不同,触发不同的过程?

1. 单元格Address的属性是否清楚呢?

如果觉得《VBA代码轻松实现鼠标点击位置不同时 触发的事件也不同》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。