2016-05-07 12 views
-1

これは私のスプレッドシートのサンプルフォーマットです。私は最初の空白のセルに行(2)から行を削除するためのコードを書こうとしましたが、データが少なくなると問題が発生します(行20-30までを意味します)。これは正しく動作していません。&すべての行を削除しています。しかし、データが30行以上になると機能します。最初の空行までの行の削除

列 ROW1会社名 ROW3のアドレス行を削除 ROW4アドレス行を削除 ROW5アドレス行を削除 row6アドレス行を削除 row7の顧客名を削除 row9アドレスを削除THIS row8アドレスラインをKEEP ROW2アドレス行を削除します行削除 行10アドレス行削除 行11アドレス行削除 行12アドレス行削除 行13アドレス行削除 行14アドレス行削除 行15ブランク行削除等row16日付範囲(01-JAN-16〜31-JAN-16 =>この row17空白行をKEEP row18の行見出しを除去 row21 DATA DATA row22 THIS row19 DATA DATA DONT CHANGE ALL DATA row20 DATAデータを保持データデータ row23データデータ

私は以下のコードでこれを実行しようとしました:

Sub EmptyRowFind() 
    Dim sourceCol As Integer, rowCount As Integer, currentRow As Integer 
    Dim currentRowValue As String 

    sourceCol = 1 
    rowCount = Cells(20, sourceCol).Row 
    For currentRow = 1 To rowCount 
     currentRowValue = Cells(currentRow, sourceCol).Value 
     If IsEmpty(currentRowValue) Or currentRowValue = "" Then 
      For i = i To currentRow - 2 
       Rows(1).Select 
       Selection.Delete Shift:=xlUp 
      Next 
     End If 

End Sub 
+0

私はcurrentRowのために=問題は、私のためであると考える - 2 – Nafis

+0

ああ、私は叫んでおりません申し訳ありませんが、ロックCAPSについて書いている間、私は非常に – Nafis

+0

申し訳ありませんが、このために、私は気にしませんでしたCAPSに書くことが私の間違いでした。 – Nafis

答えて

0

くれそう迅速な応答を与えるために特別氏リヴァイアサンにあなたのすべてにたくさんありがとうございました。私は自分で乗車券を、問題を解決してきたように...私の新しい編集したコード

Sub EmptyRowFind() 
Dim sourceCol As Integer, rowCount As Integer, currentRow As Integer 
Dim currentRowValue As String 

sourceCol = 1 
rowCount = Cells(20, sourceCol).Row 
For currentRow = 1 To rowCount 
    currentRowValue = Cells(currentRow, sourceCol).Value 
    If IsEmpty(currentRowValue) Or currentRowValue = "" Then 
     For i = i To currentRow - 2 
      Rows(1).Select 
      Selection.Delete Shift:=xlUp 
     Next 
    End If 
If IsEmpty(currentRowValue) Or currentRowValue = "" Then'==>Now added 
Exit For 
End If 
Next 
End Sub 

を見つけるExlanation: - 古いコードが実行された場合には(それが空の行を見つけたときのisEmptyループが行を削除したが、再び、それはへの最初のループのために返さcurrentrow = 1 to rowcount) &再び、2番目の空の行まで行を削除してループを実行します。このプロセスは20回実行されていました(行数= 20)。

関連する問題