比如:
Dim mCol As New Collection
mCol.Add Array(0,1)请问,如何把 mCol(1)(1) 的内容(原来为1)改为 2 我知道把数组改成对象是一种方法,但觉得那它占资源,
出于多种目的考虑,决定还是使用数组,
所以就想问这种情况如何修改?

解决方案 »

  1.   

    Private Sub MidfCol(ColIndex As Long, ArrayIndex As Long, MidfValue As Variant)
        Dim a() As Variant
        a = mCol(ColIndex)
        mCol.Remove ColIndex
        a(ArrayIndex) = MidfValue
        If ColIndex > mCol.Count Then
            mCol.Add a
        Else
            mCol.Add a, ColIndex
        End If
        Debug.Print mCol(ColIndex)(ArrayIndex)
    End Sub
      

  2.   

    原来加入的时候可能有Key值而这个Key值是没有记录的一旦用移除的办法再加入,
    那数据集合就可能造成完全的崩溃!所以,保险的办法只能直接修改数据本身。
      

  3.   

    另外,上面的定义可能不妥我觉得 Dim a() As Variant 改成 Dim a As Variant 比较合适
      

  4.   

    先删后加建议改用DICTIONARY对象,可读可写
      

  5.   

    //请问,在哪里?怎么用?你引用FSO即可看到
    至于用法,词典和Collection类似
      

  6.   

    那就是说,本主题是无解喽?
    我原来想知道的只是如何修改Collection的内容本来用Collection的原因就是简便(默认工程总是引用该库的),
    现在还要引用外部库还不如用自己的SuperCollection呢诶
      

  7.   

    而且 DICTIONARY 的用法好像和Collection 不一样啊
    很多时候只需要简单的加入数据而不必加Key,有时又是混合型的
    取值的时候,有时要用Index 有时用 Key ,这些都是Collection的特色啊据说,Collection里都是Variant型的,而V型除了数值外,其它类型的数据仅仅是存放一个指针而已?
    那有没有办法通过修改这个指针的指针,从而达到修改其数据呢?