用一个全局变量bCancel dim bCancel as boleanprivate sub work() bCancel=false '此处开始写计算的代码,估计是用循环的方式 do ... if bCancel then exit sub doevents ...... loop end subprivate sub cmdCancel_click() bCancel=true end sub
失误,把boolean写错了。下面是一个比较完整的代码演示计算过程中的退出(点击cmdCancel): dim bCancel as boleanprivate sub work() dim l as long bCancel=false do while l>0 if bCancel then exit sub doevents l=l+1 loop end subprivate sub cmdCancel_click() bCancel=true end sub
把代码写在计时器里,定时运行,要不你的程序进了那循环就出不来了,除了取消用户什么也不能做。 只要一句:if bCancel then exit sub就可以了。 另外我想问问,你读EXCEL里面数据的时候,是不是用的EXCEL对象,如果是,根本不用监视,想结束的时候,调用BOOK的CLOSE方法就可以了。
dim bCancel as boleanprivate sub work()
bCancel=false
'此处开始写计算的代码,估计是用循环的方式
do ...
if bCancel then exit sub
doevents
......
loop
end subprivate sub cmdCancel_click()
bCancel=true
end sub
dim bCancel as boleanprivate sub work()
dim l as long
bCancel=false
do while l>0
if bCancel then exit sub
doevents
l=l+1
loop
end subprivate sub cmdCancel_click()
bCancel=true
end sub
只要一句:if bCancel then exit sub就可以了。
另外我想问问,你读EXCEL里面数据的时候,是不是用的EXCEL对象,如果是,根本不用监视,想结束的时候,调用BOOK的CLOSE方法就可以了。
如果你是调用DAO或ADO等,那么需要关闭他们这些爱异步执行的家伙。
建议你用EXECL对象,可以去我的BLOG里看看EXECL对象对表格进行操作的具体方法。