Private Sub Command1_Click()
Dim i As Integer
Dim j As Integer
Dim s As IntegerFor i = 2 To 1000
    For j = 1 To i
    
      
        s = s + j     →为什么这里会益出,那里出错了?
        If i = s Then
    Print i
       Exit For
       End If
      
    Next
  Next
  
       
End Sub

解决方案 »

  1.   

    s的值超出了integer的范围。。应声明为long
    你可以debug一下 s的值
      

  2.   

    你EXIT FOR 循环的条件判断式在双循环结束前不会满足,建议代码修改如下:Private Sub Command1_Click()
    Dim i As Integer
    Dim j As Integer
    Dim s As Integer
    For i = 2 To 1000
        For j = 1 To i
            s = s + j     '→为什么这里会益出,那里出错了?
            Debug.Print , s
            If i < s Then
                Print i
                Exit For
            End If
        Next
    Next
    End Sub
      

  3.   

    Dim i As Long
        Dim j As Long
        Dim s As Long
        
        For i = 2 To 1000
            List1.Clear
            For j = 1 To i
                
                List1.AddItem CStr(j)
                List1.AddItem CStr(i)
                s = s + j 
                If i = s Then
                    Print i
                    Exit For
                End If
            
            Next
        Next
      

  4.   

    不明白程序的意图。按照原先的程序,就算不溢出,也没有结果。Option ExplicitSub main()
    Dim i As Integer
    Dim j As Integer
    Dim s As LongFor i = 2 To 1000
        For j = 1 To i
        
          
            s = s + j    ' →为什么这里会益出,那里出错了?
            If i = s Then
                Debug.Print i
                Exit For
           End If
          
        Next
      NextEnd Sub
    结果是空白
      

  5.   

    s和i不可能相等的,再说,重复计算1到i的等差数列和,这个数值应该是十分庞大了。。
    Private Sub Form_Click()
     Dim i As Integer
     Dim s As Long
     Dim j As Integer
       
        For i = 2 To 1000
          For j = 1 To i
            s = s + j
           DoEvents
          Next
        Next
        
      Label1.Caption = s
    End Sub
    s=167166999
      

  6.   

    通过跟踪,s=1,i=2. s=2,i=3.以后的值总是s>i。