wei186 发表于 2004-4-15 13:21:00

[求助][VBA] 请各位大虾改错!!!

Private Sub CommandButton1_Click()


On Error GoTo err<BR>For i = 1 To 11 Step 1<BR>slbl(i) = Val(TextBox1(i).Text)<BR>Next i<BR>slja1 = Int((slbl(1) / slbl(2) * 1000) + 0.5) / 1000<BR>slxa1 = Str(slja1)<BR>sljd0 = Int((Sqr(slja1 * 4 / 3.1415926)) * 1000 + 0.5) / 1000<BR>slxd0 = Str(sljd0)<BR>sljh2 = Int((3.6 * slbl(3) * slbl(4)) * 1000 + 0.5) / 1000<BR>slxh2 = Str(sljh2)<BR>sljh3 = Int((slbl(1) / (slbl(5) * 3.1415926 * slbl(6))) * 1000 + 0.5) / 1000<BR>slxh3 = Str(sljh3)<BR>slja2 = Int((slbl(1) / slbl(3)) * 1000 + 0.5) / 1000<BR>slxa2 = Str(slja2)<BR>slja = Int((slja1 + slja2) * 1000 + 0.5) / 1000<BR>slxa = Str(slja)<BR>sljd = Int((Str(4 * slja / 3.01415926)) * 1000 + 0.5) / 1000<BR>slxd = Str(sljd)<BR>sljv1 = Int((3.1415926 * slbl(9) * (slbl(7) * slbl(7) + slbl(7) * slbl(8) + slbl(8) * slbl(8)) / 3) * 1000 + 0.5) / 1000<BR>slxv1 = Str(sljv1)<BR>sljh = Int((slbl(10) + sljh2 + sljh3 + slbl(11) + slbl(9)) * 1000 + 0.5) / 1000<BR>slxh = Str(sljh)<BR>Label29.Caption = slxa1: Label30.Caption = slxd0: Label31.Caption = slxh2: Label53.Caption = slxh3<BR>Label55.Caption = slxa2: Label54.Caption = slxa: Label56.Caption = slxd: Label58.Caption = slxv1<BR>Label57.Caption = slxh<BR>Exit Sub<BR>err:<BR>magbox ("你所输入的数据中有违法数据,请检查!")<BR>Exit Sub


<BR>End Sub



请教各位为什么提示我“slbl(i) = Val(TextBox1(i).Text)”子过程或函数未定义~~?<BR>

efan2000 发表于 2004-4-15 14:04:00

TextBox1(i).Text,在VBA中没有控件数组,因而这种用法是错误的,应该是TextBox1.Text、TextBox2.Text、...、TextBox11.Text。

雪山飞狐_lzh 发表于 2004-4-15 18:14:00

本帖最后由 作者 于 2004-4-15 19:56:07 编辑

要写类似VB控件数组的写法可以用:‘该示例在立即窗口打印TextBox1~TextBoxn的文本值For i = 1 To n
Debug.Print Controls("TextBox" & Trim(Str(i))).Text
Next i的形式

wei186 发表于 2004-4-15 21:46:00

我用


slbl(1)=textbox1.text:slbl(2)=textbox2.text:、、、、、、slbl(11)=textbox11.text


好像还是不行


再请问楼上是不是可以写成这样“slbl(Str(i)) = TextBox(Str(i)).Text”

雪山飞狐_lzh 发表于 2004-4-15 21:57:00

在VBA中没有控件数组!!!!!


我引用的窗体的控件集合

雪山飞狐_lzh 发表于 2004-4-15 22:02:00

可以用



For i = 1 To 11


slbl(i)=Controls("TextBox" &amp; Trim(Str(i))).Text


Next i





另外,你的slbl数组定义了么?

wei186 发表于 2004-4-16 08:22:00

我用“option base 1:dim slbl(1 to 11) as long"dim i as integer”定义的,这样行吗?

wei186 发表于 2004-4-16 09:29:00

我都改过来啦,但是显示“你所输入的数据中有违法数据,请检查!”不知道是不是给slbl(i)赋值的类型不对?

雪山飞狐_lzh 发表于 2004-4-16 12:44:00

Val(Controls("TextBox" &amp; Trim(Str(i))).Text)


应该可以吧

wei186 发表于 2004-4-17 09:39:00

我上传过来,帮帮看看行吗?


多谢啦!!!

页: [1] 2
查看完整版本: [求助][VBA] 请各位大虾改错!!!