Oceanable 发表于 2019-3-23 15:05:47

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


这样也会下标越界?另外,为什么编译器只提示错误但没有了“调试”按钮?


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


落叶交给了风 发表于 2019-5-10 11:22:12

‘以下代码经过我测试可以正常运行


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


落叶交给了风 发表于 2019-5-10 11:24:26

运行代码选择了3根直线,最后消息框提示数字“3”,所以应该是没问题的。可能是你的其它部分的代码有误?

Oceanable 发表于 2019-6-7 12:36:18

感谢回复,确实是其他代码有问题。因为当时设置了错误就退出,所以没有办法定位到出现异常的语句上,以为是遍历对象这里出错了。;P
页: [1]
查看完整版本: 为何遍历对象也会下标越界?