for.....
  if form1.click then exit for
......
next
行不行就不知道了

解决方案 »

  1.   

    Option Explicit
    '快速停止
    Private Declare Function GetInputState Lib "user32" () As Long
    Private m_UserCancel As Boolean
    Private Sub cmdCancel_Click()
        m_UserCancel = True
    End Sub
    Private Sub cmdGo_Click()
        Dim lCounter As Long
        m_UserCancel = False
        Me.MousePointer = vbHourglass
            For lCounter = 0 To 10000000
            lblT.Caption = CStr(lCounter)
            'any long loop that may need to be interrupted
                If lCounter Mod 100 Then
                    If GetInputState <> 0 Then
                    'a mouse or keyboard event is in the
                    'message queue so we call DoEvents
                    'so it can be processed
                        DoEvents
                    If m_UserCancel Then Exit For
                    End If
                End If
            lblT.Refresh
            Next lCounter
        Me.MousePointer = vbDefault
    End Sub
    修改这个例程即可!!
      

  2.   

    Option Explicit
    Private m_UserCancel As Boolean
    Private Sub cmdCancel_Click()
        m_UserCancel = True
    End Sub
    Private Sub cmdGo_Click()
        m_UserCancel = False
        Me.MousePointer = vbHourglass
            for .......
                 '很耗时的循环
                 DoEvents
                 If m_UserCancel Then Exit For
            next ...
        Me.MousePointer = vbDefault
    End Sub
      

  3.   

    假设这个循环在MouseDown事件中,如果我想在第二次点击鼠标的时候强行终止第一次MouseDown事件,那该怎么办?好像这里不能设置响应标志。再加30分求解。
      

  4.   

    dim exit_sub as booleanprivate sub form_load()
        exit_sub = false
    end subprivate sub command1_click()
        exit_sub = true
    end subprivate sub 过程名(......)
    for .......
      doevents
      if exit_sub then exit for
      '很耗时的循环
    next ...
    end sub
    command1为退出循环的按钮,在执行程序时请关闭其它按钮,建议只保留推出循环的按钮。否则程序可能重复执行,产生无法预料的结果。
      

  5.   

    Dim status As Boolean, i As Double
    Private Sub Form_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
       If status = False Then
           status = True
           For i = 1 To 10000
               DoEvents
           Next
        Else
           i = 10000
           status = False
           Exit Sub
        End If
    End Sub方法比较笨,呵呵,不过我认为可以设一个全局标志,在 FOR循环里判断,如果为真就退出循环,这样应该可以吧
      

  6.   

    将过程中所有变量定义为模块级的,然后写如下代码:
    private exit as boolean
    private  as integer
    private sub command1_click()'按下该键停止过程
    exit=true
    end subprivate sub command2_click()'按下该键继续过程
    select case 
      case 1
        goto label1
      case 2
        goto label2
    ......
    exit=false
    end select
    end subprivate sub 过程名(......)
    for .......
      '很耗时的循环的一部分
    doevents
    if exit=true then
        =1
        exit sub
    end if
    label1:
     
      '很耗时的循环的一部分
    doevents
    if exit=true then
        =2
        exit sub
    end if
    label2:
    next ...
    end sub