myfreemind 发表于 2003-9-2 23:54:00

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

今天写了一程序,是查找图中的扩展数据的,第一次运行很快就查找出来了,后面多运行几次以后,查找所花的时间就越来越长,请大家帮我看看是怎么回事???原代码如下:

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

mccad 发表于 2003-9-3 22:28:00

再给个图吧

myfreemind 发表于 2003-9-3 23:21:00

图太大了,可能传不上来,我就是想问问,VBA程序会不会随着运行次数的增多,运行时间就回逐渐加班加长?

我的图有20M左右,所以传不上来!

mccad 发表于 2003-9-4 07:18:00

每次选择集的图元的顺序可能会有不同,你可以在程序中用累加,并在找到所需要图元时把累加数显示出来看看每次运行程序时该数是否相同。如果顺序不同,则因为你是对选择集中的对象进行遍历查找,所以程序循环的次数会有不同,速度也会有变化。

myfreemind 发表于 2003-9-4 19:48:00

原来是这样,谢谢!我再去试一下!
页: [1]
查看完整版本: 怎样加快VBA的运行速度???????