|
VBA初心者です。よろしくお願いします。
出勤時刻、退勤時刻を時間と分にわける作業を作成しています。
出勤時刻 退勤時刻 出勤/時間 出勤/分 退勤/時間 退勤/分
1 0930 1830
2 0930 1830
3 0930 1830
・
・
・
こうした行が36000件ほどあります。
これをそれぞれ
出勤時刻 退勤時刻 出勤/時間 出勤/分 退勤/時間 退勤/分
1 0930 1830 09 30 18 30
2 0930 1830 09 30 18 30
3 0930 1830 09 30 18 30
・
・
・
といった形に分離したいと思っています。
そこで以下のようなVBAを作成しました。
Private Sub 時刻変換_Click()
Dim shu As Variant '出勤時刻
Dim tai As Variant '退勤時刻
Dim shuhour As Variant '出勤時間
Dim shumini As Variant '出勤分
Dim taihour As Variant '退勤時間
Dim taimini As Variant '退勤分
Dim shutai As Variant '配列
Dim gyo As Variant
gyo = 2
Do While Worksheets("貼り付け").Cells(gyo, 1).Value <> ""
With Worksheets("貼り付け")
shu = .Cells(gyo, 4).Offset(0, 0).Value '出勤時刻の取り込み
tai = .Cells(gyo, 5).Offset(0, 0).Value '退勤時刻の取り込み
End With
With Worksheets("貼り付け")
shutai = Array(Left(shu, 2), Mid(shu, 3, 2), Left(tai, 2), Mid(tai, 3, 2))
End With
With Worksheets("貼り付け")
.Cells(gyo, 8).Offset(0, 0).Value = shutai(0) '出勤時間の貼り付け
.Cells(gyo, 9).Offset(0, 0).Value = shutai(1) '出勤分の貼り付け
.Cells(gyo, 10).Offset(0, 0).Value = shutai(2) '退勤時間の貼り付け
.Cells(gyo, 11).Offset(0, 0).Value = shutai(3) '退勤分の貼り付け
End With
gyo = gyo + 1
Loop
MsgBox "完了"
End Sub
動作はきちんと動くのですが、スピードがあまりに遅いのです。
セルに順番に書き込んでるからなのだと思いますが、高速化する方法はないでしょうか?
よろしくお願いします。
|
|