マクロLOOP文を別方法で高速化
シート2のボタンをクリックすると
Sub 編集が起動します。
Sub 編集にはCallで2種類のプロシージャーを
呼び出します。
シート1には約20,000行のデータがあります。
処理に約2分かかっています。
もう少し高速にする方法は
有りますでしょうか?
プロシージャーは分けておきたいです。
シートに式は入れたくありません。
Sub 編集にはCall文でさらに別のプロシージャーを5個呼び出しますが
F8キーで確認すると、それらは秒速で処理されてました。
一番時間がかかっているのがこの部分なので
この部分を対策したいです。
よろしくお願いします。
Sub 編集()
Call 検索キー
Call 日付02
Sheets("シート1").Select
Range("R1") = "キー"
Range("S1") = "日付"
Columns("B:B").Select
Selection.Delete Shift:=xlToLeft
Columns("F:F").Select
Selection.Delete Shift:=xlToLeft
Columns("H:O").Select
Selection.Delete Shift:=xlToLeft
Range("A1").Select
MsgBox "編集終了"
Sheets("シート2").Select
End Sub
Sub 検索キー()
'2010年11月17日
'R列にC,D,E列を連結させた値を転記
Sheets("シート1").Select
行 = 2
Do
If Cells(行, 1).Value = "" Then Exit Do
Cells(行, 18).Value = Cells(行, 3) & Cells(行, 4) & Cells(行, 5)
行 = 行 + 1
Loop
End Sub
Sub 日付02()
'2010年11月17日
'A列の値、半角数字8桁を下4桁で
'2桁目に/を入れてS列に転記(セルの値もセル表示も)
'例:A列20101117 S列 11/17
'セルの値が2010/11/17でセルの表示が11/27は不可
Sheets("シート1").Select
For 行 = 2 To Cells(Rows.Count, "A").End(xlUp).Row
With Cells(行, 19)
.NumberFormat = "@"
.Value = Format(Cells(行, 1), "!@@/@@")
End With
Next
End Sub