如何解决如何优化此vba循环代码?
| 嗨,我写了这段代码。但是这段代码很慢。如何优化此代码?Private Sub printItem(r,lastCol,objStream)
FirstCol = 1
Dim strFirst As String
strFirst = CStr(ActiveSheet.Cells(r,1).Value)
If strFirst = \"\" Then
Exit Sub
End If
objStream.WriteText \" <\"
objStream.WriteText \"TagName\"
objStream.WriteText \" \"
For c = FirstCol To lastCol
data = CStr(ActiveSheet.Cells(r,c).Value)
If LenB(Trim$(data)) > 0 Then
objStream.WriteText g_AttributeName(c)
objStream.WriteText \"=\"\"\"
objStream.WriteText data
objStream.WriteText \"\"\" \"
End If
Next c
objStream.WriteText \"/>\"
objStream.WriteText vbNewLine
End Sub
解决方法
这可能是您的代码运行缓慢的原因:您正在遍历单元格。 VBA和Excel工作表数据之间的每次通信都存在大量开销,并且一次引用多个单元格时,这些开销加在一起。
相反,您应该一次将所有数据加载到“ 1”数组中,然后遍历该数组,如下所示。这明显更快。
Dim varData As Variant
varData = ActiveSheet.Cells(r,FirstCol).Resize(1,lastCol - FirstCol + 1)
For c = LBound(varData,2) To UBound(varData,2)
data = CStr(varData(1,c))
If LenB(Trim$(data)) > 0 Then
\' etc.
EndIf
Next c
为了进一步阅读,请看这篇古老但仍然相关的文章:http://www.avdf.com/apr98/art_ot003.html
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。