2

LastRow変数までのすべての空白行を削除しようとしています。以下に私のサンプルを示します。機能するものは深刻な回避策のようであり、それがより短く/より速くなる可能性があると思いますが、それを行う方法についての知識がありません。

Works - 深刻な回避策

LastRow = Cells(Rows.Count, "A").End(xlUp).Row

For i = 1 to LastRow
   If Range("A" & i).value = "" then
      Range("A" & i).value = "xxxxx"
   End if
Next i

For i = 1 to LastRow
   If Range("A" & i).value = "xxxxx" then
      Range("A" & i).Delete
      i = i - 1
   End if
Next i

無限ループ

LastRow = Cells(Rows.Count, "A").End(xlUp).Row

For i = 1 to LastRow
   If Range("A" & i).value = "" then
      Range("A" & i).Delete
      i = i - 1
   End if
Next i
4

2 に答える 2

2

私はこのコードをテストしていませんが、動作するはずです (マイナーな変更が必要かもしれません):

Range("A1:A" & LastRow).SpecialCells(xlCellTypeBlanks).EntireRow.Delete
于 2012-12-03T14:39:39.887 に答える
2

まず、計算が手動に設定されていると仮定します

次に、1=i+1 になる for ループがあり、i=i-1 を実行すると、i=i+1-1 無限ループになります。これは、作業中の回避策でも発生するはずです (同じエラー)。

選択したステップ、および負のステップで For ループを実行できます。削除すると範囲が短くなるため、一番下から始めて今すぐ作業することができます

コードは次のようになります。

LastRow = Cells(Rows.Count, "A").End(xlUp).Row

For i = LastRow to 1 Step -1
   If Range("A" & i).value = "" then
      Range("A" & i).Delete
   End if
Next i

行全体を削除したい場合は、Range("A" & i).EntireRow.Delete代わりに使用してください。

于 2012-12-03T14:39:57.267 に答える