乐筑天下

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

[VBA]选择集变量的重复利用问题

[复制链接]

3

主题

5

帖子

1

银币

初来乍到

Rank: 1

铜币
17
发表于 2005-4-17 16:24:00 | 显示全部楼层 |阅读模式
我编了一个有关选择集的程序,当第一次执行
selectionset1.select mode,,,gpcode,datavalue 程序一切正常,后又用selectionset1.clear将选择集中的成员清除,重新构造选择集,用下面的语句
selectionset1.select mode,,,gpcode1,datavalue1
即:选择的方式没变,但选择的条件变了,程序就老执行不通,错误提示为:运行时错误'5'
"无效的过程调用或参数" , 构造新选择集的参数(新的两数组)肯定是没问题的,但程序到这一步就出错,请大虾帮忙
回复

使用道具 举报

26

主题

589

帖子

10

银币

中流砥柱

Rank: 25

铜币
693
发表于 2005-4-18 13:50:00 | 显示全部楼层
可能是你多次使用Add方式创建新的选择集,而原来名称的选择集已经存在,就会出错。
回复

使用道具 举报

8

主题

22

帖子

3

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
54
发表于 2005-4-18 23:37:00 | 显示全部楼层
目的是除选择集,试试用selectionset1.erase或者delete方法看
回复

使用道具 举报

11

主题

51

帖子

2

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
95
发表于 2005-4-19 10:29:00 | 显示全部楼层
安全地创建选择集很重要。给你一个子程序吧:
Public Function CreateSelectionSet(AcadDoc As AcadDocument, ByVal Name As String) As AcadSelectionSet
                         On Error GoTo ERR_HANDLER
                         
                         Dim SSetObj As AcadSelectionSet
                         Dim SSetColl As AcadSelectionSets
                         Set SSetColl = AcadDoc.SelectionSets
                         
                         Dim Index As Integer
                         Dim Found As Boolean
                         
                         Found = False
                         For Index = 0 To SSetColl.Count - 1
                                                         Set SSetObj = SSetColl.Item(Index)
                                                         If StrComp(SSetObj.Name, Name, 1) = 0 Then
                                                                                         Found = True
                                                                                         Exit For
                                                         End If
                         Next
                         
                         If Not (Found) Then
                                                         Set SSetObj = SSetColl.Add(Name)
                         Else
                                                         SSetObj.Clear
                         End If
                         
                         Set CreateSelectionSet = SSetObj
                         
                         Exit Function
ERR_HANDLER:
                         Debug.Print "Error in Function CreateSelectionSet: " & Err.Number & " -- "; Err.Description
                         Resume ERR_END
                         
ERR_END:
End Function
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-7-2 05:48 , Processed in 1.239434 second(s), 60 queries .

© 2020-2025 乐筑天下

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