|
|
|
| Dim myRow As Long |
変数myRowを長整数型で宣言します。 変数の宣言はきちんとする習慣をつけましょう。また、適切なデータ型を指定することも、パフォーマンスの向上に有効です。 |
| Application.ScreenUpdating = False |
画面の動きを止めて、パフォーマンスを向上させます。 |
| Worksheets("未収処理").Select |
シート「未収処理」を選択します。 |
| Range("A1").Select |
セルA1を選択します。 |
| For myRow = Cells(Rows.Count, 7).End(xlUp).Row To 3 Step -1 |
|
 |
上述の通りStepキーワードを指定することで、下からループさせます。 Cells(Rows.Count, 7).End(xlUp) … G列の最下行からCtrl+↑で選択されるRangeオブジェクト、つまりデータの入っている最終行を返します。 もしも最下行にデータがある場合があるのでしたら、このままでは正常に動作しませんので、
|
| If Len(Cells(Rows.Count, 7).Value) Then |
| Application.ScreenUpdating = True |
| Exit Sub |
End If> といった処理をこの前に加えて、G列の最下行の値が文字列長を持っている場合、つまり何かが入力されている場合には、処理をしないようにします。 |
| With Cells(myRow, 7) |
Withステートメントを使用して、オブジェクトの記述を省略します。 |
| If .Value = 0 Then .EntireRow.Delete |
G列のmyRow行の値が0ならば、その行を削除します。この際に上からループさせていると、行が上に詰まってしまうために不具合が生じるので、下からループさせているのです。 |
| End With |
| Next |
| Application.ScreenUpdating = True |
画面の動きを止めていたのを元に戻します。通常コードの実行の終了とともに自動でリセットされますが、たまに戻らないバグがありますので、きちんと戻すコードを付与する習慣をつけましょう。 |