关于数组传值给文本框的问题,请高人指点下

来源:百度知道 编辑:UC知道 时间:2024/05/25 05:13:14
Private Sub Command1_Click()
Dim a(10)
For j = 6 To 10
a(j) = j - 5
Next
Text1.Text = a(0) + a(a(6) / a(10))
End Sub
当把Text1.Text = a(0) + a(a(6) / a(10))改成Text1.Text = a(0)或Text1.Text =a(a(6) / a(10))程序运行后文本框中没有数值,请问为什么?还是就是传值给文本不需要str函数转换吗?
Text1.Text = a(0) ?还是就是传值给文本不需要str函数转换吗?
+ a(a(6) / a(10))则程序运行后文本框内显示为0,请问为什么?
还是就是传值给文本框不需要str函数转换吗?

传值给文本框时,VB会自动转换成string的。你的 a(10) 一开始定义定义成变体,因此从a(0)到a(10)一开始都是空值。但运行
For j = 6 To 10
a(j) = j - 5
Next 之后,从a(6)到a(10)变成数字型,但a(0)到a(5)仍是空值,因此改成Text1.Text = a(0)后,文本框中没有数值。同样Text1.Text =a(a(6) / a(10))
中a(6) / a(10)=1/5=0.2,而a(0.2)不存在,因此文本框中同样没有数值。
执行加法以后,VB自动把空值转换为数字0,进行运算,运算完后,结果当然是0了。

a(0) 未赋值 就是0
a(6) = 1
a(10) = 5
a(6) / a(10) = 0.2
a(a(6) / a(10))就是a(0)
所以 Text1.Text 是 0

循环给a赋值是从a(6) 到 a(10),a(0) 到 a(5)未赋值就是0

将数值传给 text1.text时实际上是系统自动做了转换