|    | 
     こんにちは 
 
文字列の連結ですが、test1とtest2を比較してみて下さい。test2が圧倒的に 
速いです。 
test1:連結 
test2:あらかじめ領域を確保しておき、置換する 
 
Option Explicit 
Private Declare Function timeGetTime Lib "winmm.dll" () As Long 
 
Private T1 As Long 
Private T2 As Long 
 
Sub test1() 
Dim a As String 
Dim sbuf As String 
Dim i As Long 
 
  a = "今日は暑いぞ!123456789" 
  sbuf = "" 
  T1 = timeGetTime() 
  For i = 0 To 10000 
    sbuf = sbuf & a 
  Next i 
  T2 = timeGetTime() 
  Debug.Print "Size = " & Len(sbuf) & "  処理時間" & vbTab & (T2 - T1) / 1000 & " Sec" 
End Sub 
 
Sub test2() 
Dim a As String 
Dim sbuf As String 
Dim i As Long, lLen As Long 
Dim lStart As Long 
 
  a = "今日は暑いぞ!123456789" 
  lLen = Len(a) 
  sbuf = Space(320016) 'この320016はあらかじめ文字数を計りました。 
             '実用では算出できると思います。 
  T1 = timeGetTime() 
  For i = 0 To 20000 
    If i <> 0 Then 
      lStart = lLen * i 
    Else 
      lStart = 1 
    End If 
    Mid(sbuf, lStart, lLen) = a 
  Next i 
  T2 = timeGetTime() 
  Debug.Print "Size = " & Len(sbuf) & "  処理時間" & vbTab & (T2 - T1) / 1000 & " Sec" 
End Sub 
 
まぁ、物理的な書き込みの方が効果はあると思いますが、 
更に高速化したい場合検討してみてください。 
 | 
     
    
   |