Private Sub ()
                        If (Cip(0) <> "") Then
                             k = 0
                        End If
                        If (Cip(1) <> "") Then
                             k = 1
                        End If
                        If (Cip(2) <> "") Then
                            k = 2
                        End If
                        If (Cip(3) <> "") Then
                            k = 3
                        End If  
If Value = 0 Then
      GoTo Label1
  Else
      i = k+1  'i 是静态变量
  End IfEnd Sub
 
Label1:       If Value = 0 And i = k + 1 Then
当k=0的时候value=0,然后是1,然后第三次给value赋值的时候执行label1
当k=1的时候仍然是value=0,然后是1,......然后第五次给value赋值的时候执行label1
当k=2的时候仍然是value=0,然后是1,......然后第七次给value赋值的时候执行label1
......怎么办那?我的代码不行呀.只能符合K=0的时候的情况,其他的就乱了

解决方案 »

  1.   

    For...Next
    在不知道循环内需要执行多少次语句时,宜用 Do 循环。但是,在知道要执行多少次时,则最好使用 For...Next 循环。与 Do 循环不同, For 循环使用一个叫做计数器的变量,每重复一次循环之后,计数器变量的值就会增加或者减少。For 循环的语法如下:For counter = start To end [Step increment]
    statementsNext [counter]参数 Counter、Start、end 和 increment 都是数值型的。注意   increment 参数可正可负。如果 increment 为正,则 Start 必须小于等于 end,否则不能执行循环内的语句。如果 increment 为负,则 Start 必须大于等于 end,这样才能执行循环体。如果没有设置 Step,则 increment 缺省值为 1。在执行 For 循环时,Visual Basic 设置 counter 等于 start。
    测试 counter 是否大于 end。若是的话,则 Visual Basic 退出循环。 
    (若 increment 为负,则 Visual Basic 测试 counter 是否小于 end。)执行语句。
    counter 增加一,或者增加 increment(如果已指定的话)。
    重复步骤 2 到步骤 4。 
    以下代码打印出所有有效的屏幕字体名:Private Sub Form_Click ()
       Dim I As Integer
       For i = 0 To Screen.FontCount
          Print Screen.Fonts (i)
       Next
    End Sub在 VCR 示例应用程序中,HighlightButton 过程使用 For...Next 循环,一步步经过 VCR 窗体的控件集合,并显示适当的 Shape 控件:Sub HighlightButton (MyControl As Variant)
       Dim i As Integer
       For i = 0 To frmVCR.Controls.Count - 1
          If TypeOf frmVCR.Controls (i) Is Shape Then
             If frmVCR.Controls (i).Name = MyControl Then
                frmVCR.Controls (i).Visible = True
             Else
                frmVCR.Controls (i).Visible = False
             End If
          End If
       Next
    End Sub
      

  2.   

    愣没看懂楼主意思:不知理解得对不对?Private Sub Command1_Click()
    Dim I As Integer, K As Integer, VALUE As Integer
    For K = 0 To 3
    VALUE = 0
    For I = 1 To 2 * K + 3
    VALUE = VALUE + 1
    Next
    Debug.Print "K="; K; "I="; I - 1; "VALUE="; VALUE
    Next
    End Sub
    --------------------K= 0 I= 3 VALUE= 3 
    K= 1 I= 5 VALUE= 5 
    K= 2 I= 7 VALUE= 7 
    K= 3 I= 9 VALUE= 9
      

  3.   

    楼上的大哥是没有明白我的意思。我的value只有两个值0或者1。
      

  4.   

    对不起了。我没太说清楚。现在就我这个函数每次执行的时候都会先把value的值赋0,然后再赋1(value=0,然后value=1),这两次赋值的过程只有20毫秒间隔。现在我的目的就是:当K=0的时候函数执行1次这样的过程。当K=1的时候函数执行3次这样的过程,......
      

  5.   


    Private Sub xx()
      Dim Sum As Integer
      Dim j As Integer
       For j = 0 To 3
         If Cip(j) <> "" Then k = j
       Next
       
       Sum = k * 2 + 1
       For j = 1 To Sum
           Value = 0
           '延史20ms
           Value = 1
       Next
       
      
    End Sub
     是不是这样?
      

  6.   

    晕啊,你还是说清楚SUB的意图的好。