for i=1 to 25
select case i
case 1
....
case 2
.....
case 25
end select
next i 
我有25个数据采集模块,想实现逐个采集数据.一直循环下去.
我这个循环语句有点问题
并不能逐个采集数据.请问该如何修改呢?

解决方案 »

  1.   

    Private Sub Command1_Click()    Dim i As Integer
        
        For i = 1 To 20
            Select Case i
                Case 1
                    Debug.Print "1"
                Case 2
                    Debug.Print "2"
                Case 3
                    Debug.Print "3"
                Case 4
                    Debug.Print "4"
                Case 5
                    Debug.Print "5"
                Case 6
                    Debug.Print "6"
                Case 7
                    Debug.Print "7"
                Case 8
                    Debug.Print "8"
                Case 9
                    Debug.Print "9"
                Case 10
                    Debug.Print "10"
                Case 11
                    Debug.Print "11"
                Case 12
                    Debug.Print "12"
                Case 13
                    Debug.Print "13"
                Case 14
                    Debug.Print "14"
                Case 15
                    Debug.Print "15"
                Case 16
                    Debug.Print "16"
                Case 17
                    Debug.Print "17"
                Case 18
                    Debug.Print "18"
                Case 19
                    Debug.Print "19"
                Case 20
                    Debug.Print "20"
                
            End Select
        Next i
    End Sub
      

  2.   

    楼上好有耐心,佩服
    for i=1 to 25 
    select case i 
    case 1 
    .... 
    case 2 
    ..... 
    case 25 
    end select 
    i=i+1
    next i
      

  3.   

    do
    for i=1 to 25  
    select case i  
    case 1  
    ....  
    case 2  
    .....  
    case 25  
    end select  
    i=i+1 
    next i
    loop while 1
      

  4.   

    do
    for i=1 to 25  
    select case i  
    case 1  
    ....  
    case 2  
    .....  
    case 25  
    end select  
    i=i+1 
    next i
    loop while 1
      

  5.   

    应该是这样吧:
    i = 0
    do while(true)
       i = (i mod 25) + 1
       select i
       case 1:
          ........
       case 2:
          ........
       case 3:
          ........
       case 4:
          ........
       case 5:
          ........
       case 6:
          ........      ......   case 24:
          ........
       case 25:
          ........
       end select
       doevents
       i = i + 1
    loop
      

  6.   

    DoFor i = 1 To 25
        Select Case i
            Case 1
                Debug.Print 1
            Case 2
                Debug.Print 2
            Case 3
                Debug.Print 3
            ......
            ......
            Case 25
                Debug.Print 25
        End Select
    Next i
    Loop While 1
      

  7.   

    for i=1 to 25
     这里需要用select case来判断吗?
      直接用I不就行了.
    next
    我不知道你的25个过程是怎么写的.
    如果代码一样的话,可以写个通用函数,参数是序号.
    public function 函数名(byval ID as long ) as booleanend functionfor i=1 to 25
        call 函数名(i)
    next
      

  8.   


    难道在:function 函数名(byval ID as long ) 中,就不用 Select Case 了?
      

  9.   

    传递的参数就是1到25之间的某个数,不用再用select判断了。
      

  10.   


    请看清楚,我说的是“在 函数名(byval ID as long ) 中”,也就是说在这个函数的内部。你看楼主的代码,在 For 循环中要进行 Select(楼主在这里的逻辑有问题另当别论)。多写一个函数,也不过是“把这段移到函数中”而已,实质是一样的。
    从运行效率角度来说,效率还会降低。
      

  11.   

    看了半天才明白楼主想干什么。因为有25个采集模块,所以循环25次,然后每次都做了Select判断。这样效率是比较慢的。for i=1 to 25
     采集方法(i)
    nextsub 采集方法(int i)
     直接利用变量i进行采集
    end sub以上的方法至少省略了select判断。如果循环数据达到一定量的时候,优势就可以体现了。
      

  12.   

    方法二:
    for i=1 to 25 
     直接利用变量i进行采集 
    next 但是不建议这么写。因为维护起来比较麻烦。
      

  13.   


    注意,你没有 STEP 1, 表示你每次的步距是1,如
    for i=1 to 25 step 1
    ....................
    就好了!
      

  14.   


    for循环的时候step默认就是1,写不写都没有关系。
      

  15.   

    for i=1 to 25 step 1
    select case i 
    case 1 
    .... 
    case 2 
    ..... 
    case 25 
    end select 
    next i 
    这样写可以啊 只是效率差了点
      

  16.   

    10楼说的没错.
    FOR里面再用SELECT来判断当前的循环变量是画蛇添足的做法.
    FOR I=1 TO 25
       GETDATA(I)
    NEXT
    这样形式的过程和楼主所表示的是同一个东西.