我有一条把表格里每一个格的内容合并存到一个字符串的语句,执行起来速度相当慢,请大家帮我分析一下原因,或者有什么好的方法把表格内容存到一个字符串里,下面是代码,用了一个vsgrid,
Private Sub Form_Load()
Dim i As Integer
Dim strRow(7) As String
Dim t As Long
Dim j As Integer
Dim TestStr As String
For i = 1 To 1000
            
            strRow(0) = i
            strRow(1) = i * 2
            strRow(2) = i * 3
            strRow(3) = i * 4
            strRow(4) = i * 5
            strRow(5) = i * 6
            strRow(6) = i * 7
            strRow(7) = i * 8
            
            For j = 0 To 7
               VSFlexGrid1.TextMatrix(i, j) = strRow(j)
            Next
           
            '就是下面这句代码,加上他是不加他速度的50倍,在我的电脑上都能运行2秒钟。为什么呢。
            TestStr = TestStr & strRow(0) & "|" & strRow(1) & "|" & strRow(2) & "|" & strRow(3) & "|" & strRow(4) & "|" & strRow(5) & "|" & strRow(6) & "|" & strRow(7) & "|"
            
                        
NextEnd Sub

解决方案 »

  1.   

    这个是典型的字型串拼接问题。先将各个数写入到数组中,然后再用数组的join函数拼接
      

  2.   

    把 TestStr = TestStr & strRow(0) & "|" & strRow(1) & "|" & strRow(2) & "|" & strRow(3) & "|" & strRow(4) & "|" & strRow(5) & "|" & strRow(6) & "|" & strRow(7) & "|" 
    改成下面的试试:
    for k=0 to 7
        TestStr = TestStr & strRow(k) & "|" 
    next k
      

  3.   

    TestStr = TestStr & strRow(0) & "|" & strRow(1) & "|" & strRow(2) & "|" & strRow(3) & "|" & strRow(4) & "|" & strRow(5) & "|" & strRow(6) & "|" & strRow(7) & "|" 
    strRow(0) = i 
                strRow(1) = i * 2 
                strRow(2) = i * 3 
                strRow(3) = i * 4 
                strRow(4) = i * 5 
                strRow(5) = i * 6 
                strRow(6) = i * 7 
                strRow(7) = i * 8 
    i没有赋值,不慢才怪!
      

  4.   

    应该是循环的问题,TEXTSTR最后的结果集会变更相当的长
      

  5.   

    试试把Dim TestStr As String
    改为 Dim TestStr As Variant
    估计内容太长了!
      

  6.   

    谢谢  pcwe2002 ,用你的方法执行时间几乎和原来不加那条语句的时间一样,非常感谢!
     djj315 用你的方法也可以提高速度但时间还是挺长的相对于pcwe2002的方法
     hwmys 把把Dim TestStr As String 改为 Dim TestStr As Variant 速度没变化,呵呵
    谢谢大家!