xiaohaiclj 发表于 2004-8-12 10:04:00

为什么我写的这个程序无法使用?

Private Sub UserForm_Click()
Dim acadapp As AcadObject
Set acadapp = AcadApplication
Dim sset As AcadSelectionSet
Set sset = ThisDrawing.SelectionSets.Add("newtext")
sset.SelectOnScreen
Dim txt As AcadText
For Each txt In sset
If txt.TextString = "q" Then txt.TextString = "2"
txt.Update
Next txt
sset.Delete
Set acadapp = Nothing
End Sub
我这个程序运行后电脑没提示有毛病啊,可是运行一次后就是无法在CAD2004窗口上选我要更改的文字,求教那里有毛病?先行感谢!

wyj7485 发表于 2004-8-12 13:08:00

1,过滤选择集加速度更快
2,遍历选择集变量定义为:Dim txt As Object

zfbj 发表于 2004-8-12 15:06:00

这是在VB里面编写的程序吧?
thisDrawing改为acadapp.ActiveDocument试试。

xiaohaiclj 发表于 2004-8-12 15:19:00

不是在VB里写的dim acadapp as object
                                                                                                                                                                                                         set acadapp=..............
这两句是我在VB和VBA的感念十分混乱的时候写的,现在看来在VBA里是没什么用处的!
我忘删掉了,但是删掉它们后,或者采用三楼的方法还是只能运行一次!
why

zfbj 发表于 2004-8-12 16:06:00

第二次运行的时候是不是出错?
出什么错误提示?

xiaohaiclj 发表于 2004-8-12 17:43:00

是的出错提示是:命名选择集已存在
但是我已经用delete方法删除了

zfbj 发表于 2004-8-12 19:44:00

下面是我在《VBA精彩实例教程》中的解决方法:
                       On Error Resume Next
                       Dim SSet As AcadSelectionSet
                       If Not IsNull(ThisDrawing.SelectionSets.Item("Example")) Then
                                                       Set SSet = ThisDrawing.SelectionSets.Item("Example")
                                                       SSet.Delete                               '及时删除不用的选择集非常重要
                       End If
                       Set SSet = ThisDrawing.SelectionSets.Add("Example")
在后面需要删除选择集的地方使用SSet.Delete即可。

xiaohaiclj 发表于 2004-8-12 20:07:00

十分感谢,看出和您的差距之大了
文字请问您的精彩实例教程在那里登的
我怎么找不到,我希望能把你的教程都学习一下

mccad 发表于 2004-8-12 21:25:00

关于选择集的使用在论坛里有很多,下面是最简单的创建选择集的方法:
Function CreatSSet(Optional SSetName As String = "mjtd") As AcadSelectionSet
       On Error Resume Next
       ThisDrawing.SelectionSets(SSetName).Delete
       Set CreatSSet = ThisDrawing.SelectionSets.Add(SSetName)
End Function

xiaohaiclj 发表于 2004-8-13 11:11:00

发现了个更大的问题!!!
我把我写的程序用二位高人的方法改良后,如果放到宏中在CAD2004窗口下ALT+F8后运行
宏怎么都好使,但是放到工程中还是无法解决问题,还是无法连续使用!
这到底是什么原因?高人指点!宏不过是个公用子程序,为什么在宏里可以连续运行但是到了
工程里就不行了?
页: [1]
查看完整版本: 为什么我写的这个程序无法使用?