乐筑天下

搜索
欢迎各位开发者和用户入驻本平台 尊重版权,从我做起,拒绝盗版,拒绝倒卖 签到、发布资源、邀请好友注册,可以获得银币 请注意保管好自己的密码,避免账户资金被盗
查看: 109|回复: 3

为何遍历对象也会下标越界?

[复制链接]

10

主题

32

帖子

3

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
72
发表于 2019-3-23 15:05:00 | 显示全部楼层 |阅读模式

xrqzil0hd0h.jpg

xrqzil0hd0h.jpg


这样也会下标越界?另外,为什么编译器只提示错误但没有了“调试”按钮?
For Each Objt In SeleObjts
If TypeOf Objt Is AcadLine Then
   nLine = nLine + 1:   ReDim Preserve Lines(1 To nLine):    Set Lines(nLine) = Objt
End If
Next Objt
回复

使用道具 举报

0

主题

7

帖子

1

银币

初来乍到

Rank: 1

铜币
7
发表于 2019-5-10 11:22:00 | 显示全部楼层
‘以下代码经过我测试可以正常运行
Sub test()
'创建选择集
Dim seleobjts As AcadSelectionSet
Set seleobjts = ThisDrawing.SelectionSets.Add(Time)
seleobjts.SelectOnScreen
'你的代码部分
Dim nline As Integer
Dim lines() As AcadObject
Dim objt As AcadObject
For Each objt In seleobjts
If TypeOf objt Is AcadLine Then
   nline = nline + 1:   ReDim Preserve lines(1 To nline):    Set lines(nline) = objt
End If
Next objt
'检查结果
a = lines()
MsgBox UBound(a)
End Sub
回复

使用道具 举报

0

主题

7

帖子

1

银币

初来乍到

Rank: 1

铜币
7
发表于 2019-5-10 11:24:00 | 显示全部楼层
运行代码选择了3根直线,最后消息框提示数字“3”,所以应该是没问题的。可能是你的其它部分的代码有误?
回复

使用道具 举报

10

主题

32

帖子

3

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
72
发表于 2019-6-7 12:36:00 | 显示全部楼层
感谢回复,确实是其他代码有问题。因为当时设置了错误就退出,所以没有办法定位到出现异常的语句上,以为是遍历对象这里出错了。
回复

使用道具 举报

发表回复

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

QQ|关于我们|小黑屋|乐筑天下 繁体中文

GMT+8, 2024-11-22 00:43 , Processed in 0.146085 second(s), 63 queries .

© 2020-2024 乐筑天下

联系客服 关注微信 帮助中心 下载APP 返回顶部 返回列表