Excel精英培训网

 找回密码
 注册
数据透视表40+个常用小技巧,让你一次学会!
查看: 1623|回复: 4

[已解决]看看这个代码为什么这样执行

[复制链接]
发表于 2011-11-26 22:29 | 显示全部楼层 |阅读模式
这是在常见问题区一个朋友遇到的情况,代码为:Private Sub Worksheet_SelectionChange(ByVal Target As Range)   MsgBox Target.Value
If Target.Column = 2 And Target.Row > 1 And Target.Row < 12 Then
    [A1].Select
    MsgBox Target.Value
End If
End Sub
此时点击b2单元格,连续出现三个MsgBox 分别是2,1,2
朋友认为出现两个才对,我的理解是应该出现三个,因为,点击b2,选区发生变化执行MsgBox Target.Value语句,然后由于b2,满足if语句,a1被选中,选区再次发生变化,第一条的MsgBox Target.Value语句会再次被执行,然后执行后面一个MsgBox Target.Value语句。也就是说最后一条MsgBox Target.Value重复。我的问题是为什么最后msgbox显示为2,现在定位在a1位置上,a1的值是1。那么显示2、1、1才合理呀。


最佳答案
2011-11-26 23:32
1.   Private Sub Worksheet_SelectionChange(ByVal Target As Range)   
2.   MsgBox Target.Value
3.   If Target.Column = 2 And Target.Row > 1 And Target.Row < 12 Then
4.    [A1].Select‘ 这里 又触发 选取事件 跳到1。,然后才 执行 没完成的 下面那句  
5 .   MsgBox Target.Value
6.    End If
7.    End Sub

你可以按F8  调试 一下
7.End Sub

工作簿1.rar

7.41 KB, 下载次数: 10

excel精英培训的微信平台,每天都会发送excel学习教程和资料。扫一扫明天就可以收到新教程
发表于 2011-11-26 23:32 | 显示全部楼层    本楼为最佳答案   
1.   Private Sub Worksheet_SelectionChange(ByVal Target As Range)   
2.   MsgBox Target.Value
3.   If Target.Column = 2 And Target.Row > 1 And Target.Row < 12 Then
4.    [A1].Select‘ 这里 又触发 选取事件 跳到1。,然后才 执行 没完成的 下面那句  
5 .   MsgBox Target.Value
6.    End If
7.    End Sub

你可以按F8  调试 一下
7.End Sub
过程.gif
回复

使用道具 举报

 楼主| 发表于 2011-11-26 23:45 | 显示全部楼层
不在模块里的代码怎么调试,你的对象窗口和vbe窗口怎么弄到一起的。

点评

设置 断点 代码 最前面 如图 黄色区 点一下!  发表于 2011-11-27 10:44
回复

使用道具 举报

发表于 2011-11-27 00:57 | 显示全部楼层
点到B2时,触发了事件,执行一次该过程(第一个事件)。在不考虑选中A1的情况,将有两次弹窗,两次都是[B2].VALUE
但是在第一个事件的第二次弹窗之前,触发了另一个事件,相当于又CALL了 Worksheet_SelectionChange (这是一个独立的过程,虽然跟上面的过程名是一样的,但其Target参数却是[A1],并且它不会影响第一个事件过程中的TARGET)。由于这个事件在B2触发事件后的第二个弹窗之前,那么B2触发的第二个弹窗自然在这个过程的任何弹窗之后发生。

评分

参与人数 1 +3 收起 理由
variable + 3 你准确而又成功解释了二楼要表达的东西,可.

查看全部评分

回复

使用道具 举报

发表于 2011-11-27 11:11 | 显示全部楼层
楼主客气了,二楼说的比我说的形象多了。我只是觉得如果能给二楼再配一点文字说明,可能更容易理解,于是冒昧发表自己的理解。大家都是为了学习,不是为了“最佳”。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|Excel精英培训 ( 豫ICP备11015029号 )

GMT+8, 2024-5-14 20:43 , Processed in 0.361733 second(s), 16 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表