vba 这个change事件怎么修改?
在某一处,输入某个值,按回车键,触发下面的change事件.1.要回到原先选中的项.2.把原先选中的项里输入"test"值.PrivateSubWorksheet_Cha...
在某一处, 输入某个值, 按回车键, 触发下面的change事件.
1. 要回到原先选中的项.
2. 把原先选中的项里输入"test"值.
Private Sub Worksheet_Change(ByVal Target As Range)
ActiveCell.Offset(-1, 0).Range("A1").Select
Selection = "test"
End Sub
运行结果, 陷入无限循环, 直到顶部出错.
好象写入"test"的时候, 又一次触发change事件.
哪位大侠帮我解决一下吧.
我把问题弄的太简单了。 原先的需求是:
在某一处(此处已添加批注), 输入某个值, 按回车键或点击别处, 触发change事件.
1. 光标要回到刚才输入值的单元格.
2. 把单元格里的内容跟该单元格里的批注里的值互换.
第1个需求,输入完后按回车键, 我做的没有问题, 但是点击其他单元格来出发事件, 就出问题了。 谁能解决就好了。
第2个需求有点复杂且已经实现。 所以改成简单一点, 只输入"test"值.
你们给出的办法是把第2个步骤用判断省略掉了。而我要第2个写入值的步骤必须执行,且不陷入死循环。
我的代码是用录制宏自动生成, 再改过来的。 有错误的或更简单的请多多指教。 谢谢 展开
1. 要回到原先选中的项.
2. 把原先选中的项里输入"test"值.
Private Sub Worksheet_Change(ByVal Target As Range)
ActiveCell.Offset(-1, 0).Range("A1").Select
Selection = "test"
End Sub
运行结果, 陷入无限循环, 直到顶部出错.
好象写入"test"的时候, 又一次触发change事件.
哪位大侠帮我解决一下吧.
我把问题弄的太简单了。 原先的需求是:
在某一处(此处已添加批注), 输入某个值, 按回车键或点击别处, 触发change事件.
1. 光标要回到刚才输入值的单元格.
2. 把单元格里的内容跟该单元格里的批注里的值互换.
第1个需求,输入完后按回车键, 我做的没有问题, 但是点击其他单元格来出发事件, 就出问题了。 谁能解决就好了。
第2个需求有点复杂且已经实现。 所以改成简单一点, 只输入"test"值.
你们给出的办法是把第2个步骤用判断省略掉了。而我要第2个写入值的步骤必须执行,且不陷入死循环。
我的代码是用录制宏自动生成, 再改过来的。 有错误的或更简单的请多多指教。 谢谢 展开
展开全部
楼主,这样就可以了(经过试验):
Private Sub Worksheet_Change(ByVal Target As Range)
If Range("A1").Value <> "test" Then
Range("A1").Value = "test"
End If
End Sub
其实,就在你原先的基础上加个判断就行。
第一次change事件,A1单元格的值被修改为test;
第二次change事件,判定已经等于test了,就没有修改单元格内容。
这样后面就不会再有change事件发生。
ActiveCell.Offset(-1, 0).Range("A1").Select
光标往上移一格,ActiveCell.Offset(-1, 0).Select 就可以了,还要Range("A1")干什么?
糊涂先生的方法可以满足。楼主采用吧。
跟不上楼主的需求变化。楼主应该加分寻能人了。
Private Sub Worksheet_Change(ByVal Target As Range)
If Range("A1").Value <> "test" Then
Range("A1").Value = "test"
End If
End Sub
其实,就在你原先的基础上加个判断就行。
第一次change事件,A1单元格的值被修改为test;
第二次change事件,判定已经等于test了,就没有修改单元格内容。
这样后面就不会再有change事件发生。
ActiveCell.Offset(-1, 0).Range("A1").Select
光标往上移一格,ActiveCell.Offset(-1, 0).Select 就可以了,还要Range("A1")干什么?
糊涂先生的方法可以满足。楼主采用吧。
跟不上楼主的需求变化。楼主应该加分寻能人了。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
不懂,这不是不论你输入什么值,都转化成test,而且按回车不移动到其它单元格吗?...
target.select
target="test"
不就行了?
target.select
target="test"
不就行了?
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
Private Sub Worksheet_Change(ByVal Target As Range)
If Target <> "test" Then
Target = "test"
Target.Select
End If
End Sub
If Target <> "test" Then
Target = "test"
Target.Select
End If
End Sub
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
楼主思路有问题,你想实现什么功能,直接说就可以了
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询