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个写入值的步骤必须执行,且不陷入死循环。

我的代码是用录制宏自动生成, 再改过来的。 有错误的或更简单的请多多指教。 谢谢
展开
 我来答
百度网友5311d79
2009-06-09 · TA获得超过1.9万个赞
知道大有可为答主
回答量:6356
采纳率:71%
帮助的人:3217万
展开全部
楼主,这样就可以了(经过试验):
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")干什么?

糊涂先生的方法可以满足。楼主采用吧。
跟不上楼主的需求变化。楼主应该加分寻能人了。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友907d091a4
2009-05-31 · TA获得超过8242个赞
知道大有可为答主
回答量:3234
采纳率:0%
帮助的人:4239万
展开全部
不懂,这不是不论你输入什么值,都转化成test,而且按回车不移动到其它单元格吗?...

target.select
target="test"

不就行了?
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
檀桖鲆0gLc97
2009-06-03 · TA获得超过3190个赞
知道大有可为答主
回答量:952
采纳率:0%
帮助的人:1705万
展开全部
Private Sub Worksheet_Change(ByVal Target As Range)
If Target <> "test" Then
Target = "test"
Target.Select
End If
End Sub
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
nxnd1986
2009-06-08 · TA获得超过2248个赞
知道小有建树答主
回答量:903
采纳率:0%
帮助的人:622万
展开全部
楼主思路有问题,你想实现什么功能,直接说就可以了
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 2条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式