求助 下标越界

playnetboy 2009-09-14 12:27:23
Private Sub Command1_Click()
Dim a(5000) As Long
Dim k As Long
Dim j As Long
k = 0
For j = 0 To 1000
t = 0
For i = 2 To j - 1
If (j Mod i = 0) Then
t = 1
Exit For
End If

If (t = 0) Then
k = k + 1
a(k) = j
End If
Next i
Next j
For q = 0 To k
Print a(j)
Next q
End Sub
运行时提示 a(k) = j 此处下标越界,请教各位大侠
...全文
89 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
playnetboy 2009-09-16
  • 打赏
  • 举报
回复
谢谢 ,非常感谢
hanvan 2009-09-14
  • 打赏
  • 举报
回复
上面加一句 debug.print k
看出错时k值为多少,如果不在0-5000范围内,可不就越界了么
fengfeng28 2009-09-14
  • 打赏
  • 举报
回复
楼上说的有理,就拿最后一个循环来说,J=1K
,I=2-J-1,循环了1000*998,下标最大5K,当然越界
波导终结者 2009-09-14
  • 打赏
  • 举报
回复
不越界才怪

For i = 2 To j - 1
If (j Mod i = 0) Then
t = 1
Exit For
End If

If (t = 0) Then
k = k + 1
a(k) = j
End If
Next i

k的自加是写在第二层j的循环里,2+2+3+2+3+4+2+3+4+5+....+1000,不越界才怪
嗷嗷叫的老马 2009-09-14
  • 打赏
  • 举报
回复
................帮顶
  • 打赏
  • 举报
回复
或改成 Dim a(0 to 5000) As Long
  • 打赏
  • 举报
回复
如有Option base 1, 删除,注意其他的array

2,461

社区成员

发帖
与我相关
我的任务
社区描述
VBA(Visual Basic for Applications)是Visual Basic的一种宏语言,是在其桌面应用程序中执行通用的自动化(OLE)任务的编程语言。
社区管理员
  • VBA
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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