![]() |
#2
风吹过b2021-11-29 17:38
|

Dim application,rng
Set application = GetObject(,"excel.application")
application.ScreenUpdating = false
set rng = application.selection
arr = rng.resize(rng.rows.count + 1,1).value
For i = 1 To UBound(arr) - 1
With rng(i,1)
For k = 1 To Len(arr(i,1))
If .characters(k,1).font.size > 3 Then
s = s & Mid(arr(i,1),k,1)
End If
Next
End With
arr(i,1) = s
s = ""
Next
rng.value = arr
rng.font.colorindex = 1
rng.font.size = 9
application.ScreenUpdating = True
Set application = Nothing
set rng = nothing
Set application = GetObject(,"excel.application")
application.ScreenUpdating = false
set rng = application.selection
arr = rng.resize(rng.rows.count + 1,1).value
For i = 1 To UBound(arr) - 1
With rng(i,1)
For k = 1 To Len(arr(i,1))
If .characters(k,1).font.size > 3 Then
s = s & Mid(arr(i,1),k,1)
End If
Next
End With
arr(i,1) = s
s = ""
Next
rng.value = arr
rng.font.colorindex = 1
rng.font.size = 9
application.ScreenUpdating = True
Set application = Nothing
set rng = nothing
数据源3万条左右,代码保存为VBS,运行时间为700秒左右。移植到VB,运行时间500多秒,转用VBA运行,结果为5秒多。
之前也遇到过一次类似的情况,目标区域10万行,选择其中的偶数行,同样的代码用VBS运行10分钟,用VBA几秒钟
呃,怎么差距这么大的?