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

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

Private Sub UserForm_Click()


Dim acadapp As AcadObject<BR>Set acadapp = AcadApplication<BR>Dim sset As AcadSelectionSet<BR>Set sset = ThisDrawing.SelectionSets.Add("newtext")<BR>sset.SelectOnScreen<BR>Dim txt As AcadText<BR>For Each txt In sset<BR>If txt.TextString = "q" Then txt.TextString = "2"<BR>txt.Update<BR>Next txt<BR>sset.Delete<BR>Set acadapp = Nothing<BR>End Sub


我这个程序运行后电脑没提示有毛病啊,可是运行一次后就是无法在CAD2004窗口上选我要更改的文字,求教那里有毛病?先行感谢!<BR>

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精彩实例教程》中的解决方法:


<P class=a2 style="MARGIN: 0cm 0cm 0pt"><FONT size=2>                       On Error Resume Next</FONT>


<P class=a2 style="MARGIN: 0cm 0cm 0pt"><FONT size=2><SPAN style="mso-spacerun: yes">                       Dim SSet As AcadSelectionSet</FONT></SPAN>


<P class=a2 style="MARGIN: 0cm 0cm 0pt"><FONT size=2><SPAN style="mso-spacerun: yes">                       If Not IsNull(ThisDrawing.SelectionSets.Item("Example")) Then</FONT></SPAN>


<P class=a2 style="MARGIN: 0cm 0cm 0pt"><FONT size=2><SPAN style="mso-spacerun: yes">                                                       Set SSet = ThisDrawing.SelectionSets.Item("Example")</FONT></SPAN>


<P class=a2 style="MARGIN: 0cm 0cm 0pt"><FONT size=2><SPAN style="mso-spacerun: yes">                                                       SSet.Delete                               '</SPAN>及时删除不用的选择集非常重要</FONT>


<P class=a2 style="MARGIN: 0cm 0cm 0pt"><FONT size=2><SPAN style="mso-spacerun: yes">                       End If</FONT></SPAN>


<P class=a2 style="MARGIN: 0cm 0cm 0pt"><FONT size=2><SPAN style="mso-spacerun: yes">                       Set SSet = ThisDrawing.SelectionSets.Add("Example")</FONT></SPAN>


在后面需要删除选择集的地方使用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] 2
查看完整版本: 为什么我写的这个程序无法使用?