目测了一下代码的执行过程…… n = Val(Text1) '令n等于文本框中输入的数字 ReDim a(n, n) '用n重定义数组a If i = 1 Or j = 1 Then '如果i=1或j=1(此时i和j都是0,该条件不满足) Else For j = 2 To i - 1 '令j从2循环到-1,j获得初值2,不进入循环 然后就执行到出错这句了,此时i=0,j=2,也就是说如果输入的是0或1,才会出现下标越界的错误
看来只有这点提示,你自己还没有能力改正代码啊…… 给你写个参考吧: For i = 1 To n For j = 1 To i '注意不需要循环到n,第i行只有i个数 If j = 1 Then '如果是每行的第一个数 a(i, j) = 1 '则等于1 Else '其他的数 a(i, j) = a(i - 1, j - 1) + a(i - 1, j) '都等于前一行对应的两个数之和(最右边也可以这样求) End If Picture1.Print Tab((n - i) * 2 + j * 4); a(i, j); '定位并输出这个数 Next j Picture1.Print '换行 Next i