有一字符串,里面是用逗号隔开的若干个一维数组的名字,代码依次将每个数组传给一sub,sub中使用msgbox显示出数组名和该数组第一个元素的值。求此sub代码。sub的参数数目不限,越少越好。

解决方案 »

  1.   

    private sub show(byval arrayname as string)
    select case arrayname
      case "aa"
        msgbox aa(0)
      case "bb"
        msgbox bb(0)
    end select
    end sub
      

  2.   

    Sub Test(ByVal sArrayName As String, ParamArray sArray() As Variant)
        Dim i As Long, vArrayName() As String    On Error GoTo hError    vArrayName = Split(sArrayName, ",")
        For i = 0 To UBound(sArray)
            MsgBox vArrayName(i) & vbTab & sArray(i)(0)
        NexthError:
        Erase vArrayName
    End Sub
    '调用例子
    Test "a,b", Array("a1", "a2", "a3"), Array("b1", "b2", "b3")
      

  3.   

    hedane(有球必应):dim ......   '定义了若干个数组str = "....." '里面有未知个数个数组名如何产生test调用语句呢
      

  4.   

    Sub test(str As String)
    Dim substr As String
    Dim i As Integer
    i = InStr(1, str, ",")
    substr = Left(str, i)
    MsgBox str + "-" + substr
    End Sub
      

  5.   

    建议使用 perl 或者 php 等语言 vb实现起来很难 而且不稳定
      

  6.   

    楼上 你说的是不是 limit(梦锦)兄的方法呢
      

  7.   

    当然不是,他的方法是固定的Case,每个数组名都要有一个Case对应,当然不行,而我是指用Split分隔字符串后, 用循环取出数组名,以数组名直接在集合中用关键字检索,是可无限扩充的。
      

  8.   

    哎!我还是写个示例吧
    dim Arrayco as New  Collection
    假设Arrayco是已加入所有数组及相应关键字的集合,它是在每个数组定义时维护,维护方法:
    dim Ary1(12) As long,Ary2(9) as String
    Arrayco.Add Ary1,"Ary1"
    Arrayco.Add Ary2,"Ary2"检索的过程
    Sub Test(sArrayName As String)
        Dim i As Long, a() As String
        On Error Resume next
        a = Split(sArrayName, ",")
        For i = 0 To UBound(a)
            MsgBox a(i) & vbTab & Arrayco(a(i))(0)
        Next
    End Sub