在问个问题。我想从集合里循环取出集合的值,每取出一个就删除一个,该怎么写?
我这样写对么?
  Dim mCount As Integer
        mCount = OneMessage.Count
    For i = 1 To mCount     
    Set msg = OneMessage.Item(1)
      msgstr = msg.getMsg //取出我想要的东西
       OneMessage.Remove 1 
    Next
但我觉得没删除一个,onemessage.count 就变了 所以那该怎么写呢?而且collection也没有说全部晴空collection 象clear类似的操作把

解决方案 »

  1.   

    用词典(Dictionary),需要引用Microsoft Scripting Runtime,用法和集合类似个人感觉vb提供的collection是鸡肋
      

  2.   


    For i = 1 To OneMessage.Count
          Set msg = OneMessage.Item(1)
          msgstr = msg.getMsg
          OneMessage.Remove 1 
    Next
      

  3.   

    可是我测试的结果却好像是没有删除collection里的结果,继续发送消息的时候,还有原先的消息在里边
      

  4.   

    Dim mCount As Integer
    mCount = OneMessage.Count
    For i = mCount to 1 step -1
    Set msg = OneMessage.Item(i)
    msgstr = msg.getMsg //取出我想要的东西
    OneMessage.Remove i
    Next
      

  5.   

    用DO循环:
    Do While onemessage.Count >= 1
          msgstr = onemessage(1) '取出我想要的东西
         ' Debug.Print msgstr
           onemessage.Remove 1
          Loop