Office中国论坛/Access中国论坛
标题:
很简单的一个循环想不明白
[打印本页]
作者:
Bluelost
时间:
2005-8-5 02:49
标题:
很简单的一个循环想不明白
下面的代码,本意是查找成功退出过程,查找不成功则x+1,可是发现不管查找成功与否x总是等于20,总是会激发msgbox(x),为什么?
dim x as integer
x = 0
For i = 1 To 20
If Worksheets(2).Cells(i, 1) = Target Then
Worksheets(2).Cells(i, 2).Copy
Worksheets(1).Cells(Target.Row, Target.Column + 1).PasteSpecial
Exit Sub
Else
x = x + 1
If x = 20 Then
MsgBox (x)
Exit Sub
End If
End If
Next i
作者:
情比金坚
时间:
2005-8-5 03:21
退出循环用exit for退出过程用end sub
作者:
红池坝
时间:
2005-8-5 07:52
删除 X=X+1 行
作者:
红池坝
时间:
2005-8-5 08:01
呵呵,不好意思,把X当成I了,收回楼上发言。不过问题不应该在Exit语句(我们很多时候都是在循环中退出过程的),估计是你的Target变量的问题(也就是说事实上你的运行结果一直都没有找到过,检测的办法是在下面一句:Worksheets(1).Cells(Target.Row, Target.Column + 1).PasteSpecial
加上一句:msgbox "找到了" (或者 MsgBox (x) )看这句是不是执行,如果执行,应该不会继续后面的语句
作者:
Bluelost
时间:
2005-8-5 16:24
应该是不关exit的事.
至于Worksheets(1).Cells(Target.Row, Target.Column + 1).PasteSpecial也是执行了的,因为可以直接看到结果,在后面加上msgbox(x)也可以看到是执行了
现在结果是不管输入什么,第一个if循环里的if和else同时执行,不明白问题出在哪
作者:
Bluelost
时间:
2005-8-5 16:39
呵呵,找到问题了,不好意思是我大意了
原来代码是这样的,调试时把if traget.column =1 then这句屏蔽了忘了加上来,发帖时为了方便又没把前面2个if贴出来,汗!
谢谢2位热心的斑竹
原来完整代码:
x = 0
If Target.Column = 1 Then
If Target.Count = 1 Then
If Target <> "" Then
For i = 1 To 20
If Worksheets("报表一资料").Cells(i, 1) = Target Then
Worksheets("报表一资料").Cells(i, 2).Copy
Worksheets("报表一").Cells(Target.Row, Target.Column + 1).PasteSpecial
'x = x - 1
'MsgBox (x)
Exit For
Exit Sub
Else
x = x + 1
If x = 20 Then
MsgBox ("Can Not Find '" & x & "'")
Exit Sub
End If
End If
Next i
End If
End If
End If
还有个问题想问一下,在里,无论是手动输入或是粘贴导致的改变动会引发worksheet_change(),可是点住单元格右下角拉,这样复制的变动不会引发worksheet_change(),有什么办法让这种变动也会引发worksheet_change()呢?
[此贴子已经被作者于2005-8-5 8:44:44编辑过]
作者:
红池坝
时间:
2005-8-12 07:44
我倒……
作者:
Bluelost
时间:
2005-8-12 16:53
[em04][em04][em04]
作者:
douze
时间:
2005-8-13 23:35
[em01][em02][em03][em04][em05]
欢迎光临 Office中国论坛/Access中国论坛 (http://www.office-cn.net/)
Powered by Discuz! X3.3