为何用一个数组来接收 split()函数的值,这个数组就只能定义成variant类型呢?
我反复都试过了,定成其他类型都会报错.只有定成variant类型可以,可是据说尽量不要用variant类型吗?
还有,我的一串字符串,都是字符,我想用空格分割,结果存到数组中去.按理说每个数组元素也都是字符型呀,可是这个数组定义成string型就是不行,必须要定义成variant,不明白.请老师指教.

解决方案 »

  1.   

    dim s() as string
    s=split("A B C D"," ")
      

  2.   

    区别:Private Sub Command1_Click()
    Dim s() As String
    s = Split("A B C D", " ")End SubPrivate Sub Command2_Click()
    Dim s As Variant
    s = Split("A B C D", " ")End Sub
      

  3.   


    Private Sub Command2_Click()
      Dim a() As String
      Dim str As String
      str = "Hello good luck find"
      a = Split(str, " ")
      Dim i As Integer
      For i = 0 To UBound(a)
        Debug.Print a(i)
      Next
    End Sub
      

  4.   

    仔细研究一下,我说的还不对,
    Dim arybumen() As String 是可以的.
    dim arybumen() as variant 就是不可以的.[会提示类型不匹配]
    dim arybumen as variant 却也是可以的.[此时并没有定义成数组,为何却是可以的呢?]
    请各位指教.刚学就遇到这种难题.
      

  5.   

    Split(expression[, delimiter[, count[, compare]]])
    Split函数并不是专门用来分割字符串的,还可以分割其他类型的数据
    返回类型被定义成Variant是明智的
      

  6.   

    我好象明白了一点,数组必须声明成动态的才行.是吗.
    可是下面的区别我还是弄不明白.请再指教.为什么: Dim arybumen() As String 是可以的.
    可是 : dim arybumen() as variant 就是不可以的.[会提示类型不匹配]
    可是: dim arybumen as variant 却也是可以的.[此时并没有定义成数组,为何却是可以的呢?]
    以上三种区别在哪里呢?
      

  7.   

    可以定义成已知类型的动态数组,不可以定义成variant类型(不定类型)的动态数组.所以:Dim arybumen() As String 是可以的,dim arybumen() as variant 就是不可以的至于dim arybumen as variant 只是定义一个变量而已.楼主自己把自己弄糊涂了.不用问为什么,没有什么道理好讲,编译器就是这么规定的,记住就好了.
      

  8.   

    至于dim arybumen as variant 只是定义一个变量而已
    =========================
    谢谢,我还是不明白,split()函数的结果是要用数组来接收的,不能用普通变量来接收.
    为什么定义一个variant变量却可以接收函数的结果呢?
    如果普通变量可以接收split()函数的结果,可是定义成string型的变量却是不能接收呢?
      

  9.   

    variant是一个变体,可以接受一切类型。
    所以它能接受到数组,也可以接受到对象。
      

  10.   

    Dim arybumen() As String 
    Dim arybumen as variant如果用c的角度来看
    这2种定义
    arybumen=split(****)的时候
    arybumen 的本质都好像指针一样给 arybumen 赋一个数组指针的位置
      

  11.   

    split函数是分割字符串的
    dim aa() as string
    由于分割后具体会有多少个元素未知,所以要定义成动态数组来接收,
    dim aa as variant
    对于variant型,是可变类型,包括数组类型
    所以定义成variant也是可以的
      

  12.   

    可以定义成已知类型的动态数组,不可以定义成variant类型(不定类型)的动态数组.所以:Dim arybumen() As String 是可以的,dim arybumen() as variant 就是不可以的
    ===========================
    再问最后一次就结贴,以上说法是规定吗?如果不是规定,为什么呢?
      

  13.   

    谢谢,我还是不明白,split()函数的结果是要用数组来接收的,不能用普通变量来接收.
    为什么定义一个variant变量却可以接收函数的结果呢?
    如果普通变量可以接收split()函数的结果,可是定义成string型的变量却是不能接收呢?
    =======================================variant 特殊类型
    String   普通类型
      

  14.   

    楼主精神让人感动,打个比方如果下面是对的,
    dim ren() as 人
    ren=split("zhangsan,lisi,wangwu",",")那么
    dim ren() as 人类 
    ren=split("zhangsan,lisi,wangwu",",")
    就不太合适了