乐筑天下

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

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

[复制链接]

2

主题

9

帖子

1

银币

初来乍到

Rank: 1

铜币
17
发表于 2009-8-10 22:26:00 | 显示全部楼层 |阅读模式
刚开始学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
运行老发生错误,百思不得其解。错误提示见附件。
多谢啦。
回复

使用道具 举报

158

主题

2315

帖子

10

银币

顶梁支柱

Rank: 50Rank: 50

铜币
2951
发表于 2009-8-10 22:32:00 | 显示全部楼层
没有附件!
entry = sset.Item(sset.Count + 1)
这句有问题。sset.item(?)是从0开始数的。所以它的最大数应该是count-1
回复

使用道具 举报

2

主题

9

帖子

1

银币

初来乍到

Rank: 1

铜币
17
发表于 2009-8-10 22:34:00 | 显示全部楼层
不好意思,这里不能传图片吗,那只能描述啦。错误提示如下:
        运行时错误'-7147467259(8004005)':
        方法'add'作用于对象‘iacadselectionsets'时失败
我试了.SelectByPolygon 方法,还是出错。
回复

使用道具 举报

2

主题

9

帖子

1

银币

初来乍到

Rank: 1

铜币
17
发表于 2009-8-10 22:38:00 | 显示全部楼层
这么快就有回复啦。原来我这里也错啊。不过我运行时发生的错误是上面那个,麻烦再帮忙解答一下啦
回复

使用道具 举报

158

主题

2315

帖子

10

银币

顶梁支柱

Rank: 50Rank: 50

铜币
2951
发表于 2009-8-10 22:40:00 | 显示全部楼层
那是因为图中本身已存在同名的选择集了。需要先清除掉,再增加。
可参考
回复

使用道具 举报

2

主题

9

帖子

1

银币

初来乍到

Rank: 1

铜币
17
发表于 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
回复

使用道具 举报

2

主题

9

帖子

1

银币

初来乍到

Rank: 1

铜币
17
发表于 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
回复

使用道具 举报

158

主题

2315

帖子

10

银币

顶梁支柱

Rank: 50Rank: 50

铜币
2951
发表于 2009-8-11 06:46:00 | 显示全部楼层
不好意思,看你标题是VB,下面的内容中注的是VBA程序。先得搞清楚是VB和VBA。按照你上面的写法,应该都在VBA中写的。
在VBA的程序中,如果当前显示对话框时,需要先隐藏对话框才能在屏幕上选择对象。也就是需要写上me.hide。选择完对象后,再用me.show返回对话框。
回复

使用道具 举报

2

主题

9

帖子

1

银币

初来乍到

Rank: 1

铜币
17
发表于 2009-8-11 07:13:00 | 显示全部楼层
太感谢啦
原来VB和vba有这么大的区别啊
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-7-2 00:29 , Processed in 1.997778 second(s), 70 queries .

© 2020-2025 乐筑天下

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