我有一程序是读取Excel表中的数据,然后进行计算,需要时间比较长,用户要求可以通过按键来中止程序,如何实现?

解决方案 »

  1.   

    用一个全局变量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
      

  2.   

    失误,把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
      

  3.   

    把代码写在计时器里,定时运行,要不你的程序进了那循环就出不来了,除了取消用户什么也不能做。
    只要一句:if bCancel then exit sub就可以了。
    另外我想问问,你读EXCEL里面数据的时候,是不是用的EXCEL对象,如果是,根本不用监视,想结束的时候,调用BOOK的CLOSE方法就可以了。
      

  4.   

    详细点说,如果调用的是EXCEL对象,你关闭自己的程序是没用的,必须调用CLOSE方法或用API结束相应进程或投递关闭消息到其窗口。最好还是用CLOSE方法。不会写的话,用EXCEL里面的宏功能,录制你的操作,然后看生成的宏代码改改就出来了。
    如果你是调用DAO或ADO等,那么需要关闭他们这些爱异步执行的家伙。
    建议你用EXECL对象,可以去我的BLOG里看看EXECL对象对表格进行操作的具体方法。