菜鸟求教,一个小的子程序总是说cann't assign to array?

revell 2008-02-12 06:39:25
我写了一个子方程模块,要比较一个字段和一个数组,如果字段在数组里面就返回True,否则返回False.

Function IsInArray(s, temp10) As Boolean
Dim i As Long
For i = LBound(temp10) To UBound(temp10)
If temp10(i) = s Then
IsInArray = True
Exit For
Else
IsInArray = False
End If
Next i
End Function
------------------------------
Sub test2()
Dim s As String
s = "cat"
Dim temp10(1 To 3) As String
temp10 = Array("cat", "dog", "bird") <==高亮在这里
Dim yesno As Boolean
yesno = IsInArray(s, temp10)
Debug.Print yesno
End Sub

然后用test2()去调试。结果说“cann't assign to array”,并且高亮显示“temp10”.不知道错在哪里?
能不能帮我看看不知道错在哪里? 本质上来说这个功能很直白的. 谢谢.
...全文
510 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
liuyann 2008-02-13
  • 打赏
  • 举报
回复
如果您问题已经得解决,请您及时结帖给分,以感谢帮助您的朋友。

结帖方法:点击版面右上方或右下方 <管理> ,进入页面后就可以输入密码,分别给分,结帖。
或参考:http://www.csdn.net/help/over.asp
liuyann 2008-02-13
  • 打赏
  • 举报
回复
多谢楼上的,调试出来了,可以运行。!

但是不理解为什么Dim temp10后面不加As和type呢?

我又试了一下。
Dim temp10 As Variant 可以的,但是改为String就不行了。不理解.


发表于:2008-02-12 09:21:141楼 得分:0
Array Function

Returns a Variant containing an array.



发表于:2008-02-13 09:28:265楼 得分:0
Array 函数


返回一个包含数组的 Variant。

z_wenqian 2008-02-13
  • 打赏
  • 举报
回复
Array 函数


返回一个包含数组的 Variant。

语法

Array(arglist)

所需的 arglist 参数是一个用逗号隔开的值表,这些值用于给 Variant 所包含的数组的各元素赋值。如果不提供参数,则创建一个长度为 0 的数组。

说明

用来表示数组元素的符号由变量名、圆括号以及括号中的所需元素的索引号组成。在下面的示例中,第一条语句创建一个 Variant 的变量 A。第二条语句将一个数组赋给变量 A。最后一条语句将该数组的第二个元素的值赋给另一个变量。

Dim A As Variant
A = Array(10,20,30)
B = A(2)

使用 Array 函数创建的数组的下界受 Option Base 语句指定的下界的决定, 除非 Array 是由类型库(例如 VBA.Array )名称限定。如果是由类型库名称限定,则 Array 不受 Option Base 的影响。

注意 没有作为数组声明的 Variant 也可以表示数组。除了长度固定的字符串以及用户定义类型之外,Variant 变量可以表示任何类型的数组。尽管一个包含数组的 Variant 和一个元素为 Variant 类型的数组在概念上有所不同,但对数组元素的访问方式是相同的。



因为Array返回的是Variant,所以定义变量A时只能为Variant,而不能用String,Long,Integer等,否则就不能用Array
liuyann 2008-02-12
  • 打赏
  • 举报
回复
Sub test2()
Dim s As String
s = "cat"
Dim temp10
temp10 = Array("cat", "dog", "bird")
Dim yesno As Boolean
yesno = IsInArray(s, temp10)
Debug.Print yesno
End Sub
liuyann 2008-02-12
  • 打赏
  • 举报
回复
Array Function

Returns a Variant containing an array.


not a Array !
revell 2008-02-12
  • 打赏
  • 举报
回复
多谢楼上的,调试出来了,可以运行。!

但是不理解为什么Dim temp10后面不加As和type呢?

我又试了一下。
Dim temp10 As Variant 可以的,但是改为String就不行了。不理解.
arong1234 2008-02-12
  • 打赏
  • 举报
回复
其实就是语法不允许给数组直接赋值,你要一个元素一个元素赋值

5,173

社区成员

发帖
与我相关
我的任务
社区描述
其他开发语言 Office开发/ VBA
社区管理员
  • Office开发/ VBA社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧