ag503685496 发表于 2009-8-10 22:26:00

[求助]关于vb的选择集出错的问题

刚开始学vba,感觉真是寸步难行啊,又只好求助朋友们啦。
代码如下
Private Sub CommandButton2_Click()
Dim sset As AcadSelectionSet
Set sset = ThisDrawing.SelectionSets.Add("a")
sset.SelectOnScreen
Dim entry As AcadEntity
entry = sset.Item(sset.Count + 1)
MsgBox ("this is a" & entry.ObjectName)
End Sub
运行老发生错误,百思不得其解。错误提示见附件。
多谢啦。

mccad 发表于 2009-8-10 22:32:00

没有附件!
entry = sset.Item(sset.Count + 1)
这句有问题。sset.item(?)是从0开始数的。所以它的最大数应该是count-1

ag503685496 发表于 2009-8-10 22:34:00

不好意思,这里不能传图片吗,那只能描述啦。错误提示如下:
      运行时错误'-7147467259(8004005)':
      方法'add'作用于对象‘iacadselectionsets'时失败
我试了.SelectByPolygon 方法,还是出错。

ag503685496 发表于 2009-8-10 22:38:00

这么快就有回复啦。原来我这里也错啊。不过我运行时发生的错误是上面那个,麻烦再帮忙解答一下啦

mccad 发表于 2009-8-10 22:40:00

那是因为图中本身已存在同名的选择集了。需要先清除掉,再增加。
可参考

ag503685496 发表于 2009-8-10 23:26:00

我改了一下,可是程序运行到红色字体处,仍然出错。显示为:运行时错误-2147467259(80004005),方法SelectOnScreen作用于对象'iacadselectionset'时失败。
Function CreateSelectionSet(Optional SSetName As String = "mjtd") As AcadSelectionSet
    On Error Resume Next
    ThisDrawing.SelectionSets(SSetName).Delete
    Set CreateSelectionSet = ThisDrawing.SelectionSets.Add(SSetName)
End Function
Private Sub CommandButton2_Click()
Dim SSet As AcadSelectionSet
Set SSet = CreateSelectionSet
SSet.SelectOnScreen
Dim entry As AcadEntity
entry = SSet.Item(SSet.Count - 1)
MsgBox ("this is a")
MsgBox (entry.ObjectName)
End Sub

ag503685496 发表于 2009-8-11 00:17:00

我又写了段代码,还是遇到上面类似的错误。我用的是cad2002,后来在2004下运行,显示的是:运行时错误,autocad主窗口不可见;再点击帮助,提示为:AutoCAD 主窗口不可见。要打开该窗口,请将应用程序对象的可见性特性设置为 acTrue。不知怎么办啦,请求帮助
Private Sub CommandButton2_Click()
Dim returnObj As AcadObject
Dim basePnt As Variant
ThisDrawing.Utility.GetEntity returnObj, basePnt, "Select an object"
End Sub

mccad 发表于 2009-8-11 06:46:00

不好意思,看你标题是VB,下面的内容中注的是VBA程序。先得搞清楚是VB和VBA。按照你上面的写法,应该都在VBA中写的。
在VBA的程序中,如果当前显示对话框时,需要先隐藏对话框才能在屏幕上选择对象。也就是需要写上me.hide。选择完对象后,再用me.show返回对话框。

ag503685496 发表于 2009-8-11 07:13:00

太感谢啦
原来VB和vba有这么大的区别啊
页: [1]
查看完整版本: [求助]关于vb的选择集出错的问题