明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 2256|回复: 4

怎样加快VBA的运行速度???????

[复制链接]
发表于 2003-9-2 23:54:00 | 显示全部楼层 |阅读模式
今天写了一程序,是查找图中的扩展数据的,第一次运行很快就查找出来了,后面多运行几次以后,查找所花的时间就越来越长,请大家帮我看看是怎么回事???原代码如下:

Option Explicit


Sub djfind()
On Error Resume Next
'On Error GoTo err
Dim zdh As String
Dim Xdatatype As Integer
Dim Xdatavalue As Variant
Dim lsset As AcadSelectionSet
Dim entity As AcadEntity
Dim i As Integer
'If ThisDrawing.SelectionSets.Count > 0 Then
'    For i = 0 To ThisDrawing.SelectionSets.Count - 1
'        ThisDrawing.SelectionSets.Item(i).Clear
'        ThisDrawing.SelectionSets.Item(i).Delete
'    Next
'End If

Dim Fdata(1) As Variant
Dim Ftype(1) As Integer

Ftype(0) = 0
Fdata(0) = "Line"
Ftype(1) = 39
Fdata(1) = 1500088
Set lsset = ThisDrawing.SelectionSets.Add("lsset")
lsset.Select acSelectionSetAll, , , Ftype, Fdata

zdh = ThisDrawing.Utility.GetString(1, vbCr & "输入宗地号:")
Dim lspnt As Variant
Dim lepnt As Variant

For Each entity In lsset
entity.GetXData "", Xdatatype, Xdatavalue

Select Case Xdatavalue(4)
Case zdh
lspnt = entity.StartPoint
lepnt = entity.EndPoint


MsgBox "找到"
ThisDrawing.Application.ZoomWindow lspnt, lepnt
lsset.Clear
lsset.Delete
Exit Sub
End Select
Next



End Sub
发表于 2003-9-3 22:28:00 | 显示全部楼层
再给个图吧
 楼主| 发表于 2003-9-3 23:21:00 | 显示全部楼层
图太大了,可能传不上来,我就是想问问,VBA程序会不会随着运行次数的增多,运行时间就回逐渐加班加长?

我的图有20M左右,所以传不上来!
发表于 2003-9-4 07:18:00 | 显示全部楼层
每次选择集的图元的顺序可能会有不同,你可以在程序中用累加,并在找到所需要图元时把累加数显示出来看看每次运行程序时该数是否相同。如果顺序不同,则因为你是对选择集中的对象进行遍历查找,所以程序循环的次数会有不同,速度也会有变化。
 楼主| 发表于 2003-9-4 19:48:00 | 显示全部楼层
原来是这样,谢谢!我再去试一下!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2024-11-28 14:43 , Processed in 0.189944 second(s), 23 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表