マクロの実行を途中で止める
無限ループじゃCtrl+Breakですが
処理量が膨大でいつまでも終わらず帰られへんやんけな時、それじゃまたいつになったら止まるか判らないのね。そんな時用
先ずタスクマネージャーからエディターを再起動して保存ボタンを
これで実行途中の状態が保存されます
エクセル本体はまだ固まったままなのでタスクマネージャーから終了
これで帰れます
昨夕やっちまった例
こんな表
この水色の20万行*4列に有る価格で1行下の価格が同じならそれを消すマクロ
Sub 下が同じなら消す()
Dim Rp As Range 'rpはk-n全部
Application.ScreenUpdating = False
Application.Calculation = xlCalculationManual
For Each Rp In Selection
With Rp
If .Value = .Offset(1).Value Then
.Offset(1).ClearContents
End If
End With
Next
Application.Calculation = xlCalculationAutomatic
Application.ScreenUpdating = True
End Sub
こんな簡単なやつですぐ終わるだろうと思ってたらところがどっこい
1時間20分で9万行しか処理出来てませんでした
それでプロシージャに少し手を加えてみました
If .Value = .Offset(1).Value Then
.Offset(1).ClearContents
End If
この部分を
If Rp <> "" Then
If .Value = .Offset(1).Value Then
.Offset(1).ClearContents
End If
End If
とそのレンジにデータが有れば処理するというのを追加
すると何と5分30秒で終了
早く処理させるプロシージャ書くよう心がけましょうね
変数使って範囲指定したりするとき
頭悪いのでダブルクォーテーションの位置でいつも悩む
適当に色々やってみて何とかなるのだが
最近使ったのちょっとメモ
.Value = "=sum(" & Retu & "$" & Sho & ":" & Retu & "$" & Matu & ")"
.Offset(, 19).Value = WorksheetFunction.Average(Range("g" & .Row - 84 & ": g" & .Row - 1))