原来是简单的使用&不停的拼接,16万个字符串的时候,好长时间……
搜索,折腾,结果大概如下:
Dim startIndex As Long Dim stringBuffer As String Dim stepString As String Dim stepLen As Long
startIndex = 1 stringBuffer = Space(20000) '直接占用两万个字符的空间
For i=0 To 10000 '根据需要循环 stepString =....'我这里是小拼接一下 stepLen = Len(stepString) If startIndex + stepLen >20001 Then ....xxx.value = RTrim(stringBuffer) '我这里直接就用了,没有再次拼接。 StringBuffer = Space(20000) startIndex = 1 End If Mid(stringBuffer,startIndex,stepLen) = stepString '替换指定位置 startIndex = startIndex + stepLen '下标增加 Next ....xxx.value = RTrim(stringBuffer) '最后还有一次,别忘了。
优化后的时间,呵呵,不到10秒。
|