|
▼VBA初心者 さん:
こちらで45000行16列、各セル 16文字 のデータを作成し以下のコードを走らせると、
こちらの環境で 3秒弱です。
なので、ステータスバーの表示をするまでもないと思います。(コードではしていません)
DoEventsも不要です。
ただ、出来上がりのブックは10メガほどになりますね。
これって、ブックそのものの扱いが重そうですね。
Sub Test()
Dim t As Double
Dim ws1 As Worksheet
Dim ws2 As Worksheet
Dim fV As Variant
Dim tV() As String
Dim i As Long
Dim y As Long
Dim x As Long
Dim j As Long
Dim z As Long
Dim flg As Boolean
t = Timer
Set ws1 = Sheets("Sheet1")
Set ws2 = Sheets("Sheet2")
fV = ws1.Range("A1", ws1.Range("A" & Rows.Count).End(xlUp)).Resize(, 16).Value
ReDim tV(1 To UBound(fV, 1), 1 To 16 * 3)
For i = 1 To UBound(fV, 1) Step 3
x = 0
z = z + 1
For y = i To i + 2
If y > UBound(fV, 1) Then
flg = True
Exit For
Else
For j = 1 To UBound(fV, 2)
x = x + 1
tV(z, x) = fV(y, j)
Next
End If
Next
If flg Then Exit For
Next
ws2.Range("A1").Resize(z, UBound(tV, 2)).Value = tV
MsgBox Timer - t
End Sub
|
|