为何用一个数组来接收 split()函数的值,这个数组就只能定义成variant类型呢?
我反复都试过了,定成其他类型都会报错.只有定成variant类型可以,可是据说尽量不要用variant类型吗?
还有,我的一串字符串,都是字符,我想用空格分割,结果存到数组中去.按理说每个数组元素也都是字符型呀,可是这个数组定义成string型就是不行,必须要定义成variant,不明白.请老师指教.
我反复都试过了,定成其他类型都会报错.只有定成variant类型可以,可是据说尽量不要用variant类型吗?
还有,我的一串字符串,都是字符,我想用空格分割,结果存到数组中去.按理说每个数组元素也都是字符型呀,可是这个数组定义成string型就是不行,必须要定义成variant,不明白.请老师指教.
s=split("A B C D"," ")
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
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
Dim arybumen() As String 是可以的.
dim arybumen() as variant 就是不可以的.[会提示类型不匹配]
dim arybumen as variant 却也是可以的.[此时并没有定义成数组,为何却是可以的呢?]
请各位指教.刚学就遇到这种难题.
Split函数并不是专门用来分割字符串的,还可以分割其他类型的数据
返回类型被定义成Variant是明智的
可是下面的区别我还是弄不明白.请再指教.为什么: Dim arybumen() As String 是可以的.
可是 : dim arybumen() as variant 就是不可以的.[会提示类型不匹配]
可是: dim arybumen as variant 却也是可以的.[此时并没有定义成数组,为何却是可以的呢?]
以上三种区别在哪里呢?
=========================
谢谢,我还是不明白,split()函数的结果是要用数组来接收的,不能用普通变量来接收.
为什么定义一个variant变量却可以接收函数的结果呢?
如果普通变量可以接收split()函数的结果,可是定义成string型的变量却是不能接收呢?
所以它能接受到数组,也可以接受到对象。
Dim arybumen as variant如果用c的角度来看
这2种定义
arybumen=split(****)的时候
arybumen 的本质都好像指针一样给 arybumen 赋一个数组指针的位置
dim aa() as string
由于分割后具体会有多少个元素未知,所以要定义成动态数组来接收,
dim aa as variant
对于variant型,是可变类型,包括数组类型
所以定义成variant也是可以的
===========================
再问最后一次就结贴,以上说法是规定吗?如果不是规定,为什么呢?
为什么定义一个variant变量却可以接收函数的结果呢?
如果普通变量可以接收split()函数的结果,可是定义成string型的变量却是不能接收呢?
=======================================variant 特殊类型
String 普通类型
dim ren() as 人
ren=split("zhangsan,lisi,wangwu",",")那么
dim ren() as 人类
ren=split("zhangsan,lisi,wangwu",",")
就不太合适了