乐筑天下

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

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

[复制链接]

5

主题

10

帖子

2

银币

初来乍到

Rank: 1

铜币
30
发表于 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窗口上选我要更改的文字,求教那里有毛病?先行感谢!
回复

使用道具 举报

13

主题

396

帖子

5

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
448
发表于 2004-8-12 13:08:00 | 显示全部楼层
1,过滤选择集加速度更快
2,遍历选择集变量定义为:Dim txt As Object
回复

使用道具 举报

34

主题

372

帖子

7

银币

中流砥柱

Rank: 25

铜币
508
发表于 2004-8-12 15:06:00 | 显示全部楼层
这是在VB里面编写的程序吧?
thisDrawing改为acadapp.ActiveDocument试试。
回复

使用道具 举报

5

主题

10

帖子

2

银币

初来乍到

Rank: 1

铜币
30
发表于 2004-8-12 15:19:00 | 显示全部楼层
不是在VB里写的dim acadapp as object
                                                                                                                                                                                                         set acadapp=..............
这两句是我在VB和VBA的感念十分混乱的时候写的,现在看来在VBA里是没什么用处的!
我忘删掉了,但是删掉它们后,或者采用三楼的方法还是只能运行一次!
why
回复

使用道具 举报

34

主题

372

帖子

7

银币

中流砥柱

Rank: 25

铜币
508
发表于 2004-8-12 16:06:00 | 显示全部楼层
第二次运行的时候是不是出错?
出什么错误提示?
回复

使用道具 举报

5

主题

10

帖子

2

银币

初来乍到

Rank: 1

铜币
30
发表于 2004-8-12 17:43:00 | 显示全部楼层
是的出错提示是:命名选择集已存在
但是我已经用delete方法删除了
回复

使用道具 举报

34

主题

372

帖子

7

银币

中流砥柱

Rank: 25

铜币
508
发表于 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即可。
回复

使用道具 举报

5

主题

10

帖子

2

银币

初来乍到

Rank: 1

铜币
30
发表于 2004-8-12 20:07:00 | 显示全部楼层
十分感谢,看出和您的差距之大了
[glow=255,red,2]文字[/glow]请问您的精彩实例教程在那里登的
我怎么找不到,我希望能把你的教程都学习一下
回复

使用道具 举报

158

主题

2315

帖子

10

银币

顶梁支柱

Rank: 50Rank: 50

铜币
2951
发表于 2004-8-12 21:25:00 | 显示全部楼层
关于选择集的使用在论坛里有很多,下面是最简单的创建选择集的方法:
  1. Function CreatSSet(Optional SSetName As String = "mjtd") As AcadSelectionSet
  2.        On Error Resume Next
  3.        ThisDrawing.SelectionSets(SSetName).Delete
  4.        Set CreatSSet = ThisDrawing.SelectionSets.Add(SSetName)
  5. End Function
回复

使用道具 举报

5

主题

10

帖子

2

银币

初来乍到

Rank: 1

铜币
30
发表于 2004-8-13 11:11:00 | 显示全部楼层
发现了个更大的问题!!!
我把我写的程序用二位高人的方法改良后,如果放到宏中在CAD2004窗口下ALT+F8后运行
宏怎么都好使,但是放到工程中还是无法解决问题,还是无法连续使用!
这到底是什么原因?高人指点!宏不过是个公用子程序,为什么在宏里可以连续运行但是到了
工程里就不行了?
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-3-16 03:11 , Processed in 0.465115 second(s), 83 queries .

© 2020-2025 乐筑天下

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