LYHZM 发表于 2004-4-25 08:32:00

请问,在一个VBA工程中再编写怎样的程序代码,能够终止此工程的运行?

请问,在一个VBA工程中再编写怎样的程序代码,能够实现以下功能:


                       当此工程运行时(如正在提示用户在AutoCAD界面中选择图形),当用户按下ESC键准备终止此工程的运行时,程序执行一段代码,以执行删除选择集(否则,下次再运行此工程时将出现错误)等操作,最后结束工程的运行,返回AutoCAD界面?

雪山飞狐_lzh 发表于 2004-4-25 19:03:00

Sub Test()<BR>On Error Resume Next<BR>ThisDrawing.Utility.GetPoint<BR>If Err Then GoTo ErrClear<BR>'此处执行你的后续代码<BR>ErrClear:<BR>'此处执行删除选择集等操作<BR>End Sub<BR>

LYHZM 发表于 2004-4-26 11:24:00

非常感谢lzh741206老师的解答!


                                  修改代码大致如下:


                                                       Sub Test()<BR>                                                                                       On Error Resume Next<BR>                                                                                       ThisDrawing.Utility.GetPoint


                                                                                       If Err Then GoTo ErrClear<BR>                                                                                                                       '此处执行你的后续代码 ...<BR>                                                                                                                                                                                                                                                               <BR>                                                                                       ErrClear:<BR>                                                                                                               SelSet.Clear<BR>                                                                                                               SelSet.Delect


                                                               End Sub


<BR>                       但上述代码运行时产生如下错误:


                       1.当正在提示用户在AutoCAD界面中选择图形时,若用户没有选中程序设定的、必须选择的图形,而且用户又不愿再选择图形、按下ESC键准备终止此工程的运行时,会出现一个程序设定的提示窗口,提示用户没有选中要求的图形而要求重新选择,请问,此时如何实现在用户按下ESC键是能够终止此工程的运行而不是出现提示窗口?


                       2.若运行中出现错误,如提示用户确定插入点时而用户直接按回车键跳过,则当下次再运行此工程时,会在创建选择集的语句(Set SelSet = ThisDrawing.SelectionSets.Add("图块选择集"))出现错误,此时,若把此语句中的选择集的名称更改一下如改为“图块选择集2”则运行正常。难道上一次运行时语句“SelSet.Clear”及“SelSet.Delect”没有被执行?


                       请问上述问题如何解决?         <BR>

雪山飞狐_lzh 发表于 2004-4-26 12:14:00

我只是用GetPoint说明如何做,应该用


Sub Test()<BR>On Error Resume Next<BR>Dim SelSet As AcadSelectionSet<BR>Set SelSet = ThisDrawing.SelectionSets.Add("图块选择集")<BR>If Err Then Set SelSet = ThisDrawing.SelectionSets("图块选择集"): SelSet.Clear<BR>SelSet.SelectOnScreen<BR>If SelSet.Count = 0 Then GoTo ErrClear<BR>'MsgBox SelSet.Count<BR>'此处执行你的后续代码<BR>ErrClear:


SelSet.Delect<BR>End Sub<BR><BR>

LYHZM 发表于 2004-5-3 22:00:00

非常感谢lzh741206老师耐心和细致的解答!
页: [1]
查看完整版本: 请问,在一个VBA工程中再编写怎样的程序代码,能够终止此工程的运行?