2017-06-16 9 views
1

特定の列のセルが空であれば行を削除したい。空の行を削除すると1004のエラーが発生する

見つかったサンプルコードhereを使用しています。

Sub delrowEmptyStr() 

    Dim EmpCol As Range, LstRw As Long 
    LstRw = Columns(2).Find(What:="*", SearchOrder:=xlRows, SearchDirection:=xlPrevious, LookIn:=xlFormulas).Row 
    Set EmpCol = Cells.Find(What:="*", SearchOrder:=xlColumns, SearchDirection:=xlPrevious, LookIn:=xlFormulas).Offset(, 1).EntireColumn 
    With Intersect(Rows("2:" & LstRw), EmpCol) 
     .FormulaR1C1 = "=IF(RC2="""",""X"","""")" 
     .Value = .Value 
     .SpecialCells(xlConstants).EntireRow.Delete 
    End With 
End Sub 

私は再フォーマットし、列Aにそのデータを入れて、私は次のようにサブを変更:

Sub delrowEmptyStr() 

    Dim EmpCol As Range, LstRw As Long 
    LstRw = Columns(1).Find(What:="*", SearchOrder:=xlRows, SearchDirection:=xlPrevious, LookIn:=xlFormulas).Row 
    Set EmpCol = Cells.Find(What:="*", SearchOrder:=xlColumns, SearchDirection:=xlPrevious, LookIn:=xlFormulas).Offset(, 1).EntireColumn 
    With Intersect(Rows("2:" & LstRw), EmpCol) 
     .FormulaR1C1 = "=IF(RC1="""",""X"","""")" 
     .Value = .Value 
     .SpecialCells(xlConstants).EntireRow.Delete 
    End With 
End Sub 

最初に、問題のセルが列Bにあった私は、次のように使用しました

これを実行すると 'が生成されます。実行時エラー1004:セルが見つかりませんでした'。 「デバッグ」を叩く

が行に

.SpecialCells(xlConstants).EntireRow.Delete 

を強調し、私はサブの2番目の反復を実行する前に、異なる並べ替え私のデータをやった - 多分私は取り除くしたいすべての空のセルを有する場合、私は思ったんだけど列の下部に問題があるかもしれませんか?

答えて

0

私はカラムの底に取り除きたくない空のセルをすべて持っているのだろうかと疑問に思っていますか?

はい、間違いなく、声明

LstRw = Columns(1).Find(What:="*", SearchOrder:=xlRows, _ 
    SearchDirection:=xlPrevious, LookIn:=xlFormulas).Row 

は、その特定の列の最後の空でない行としてLstRwを生み出すため。特定の列の最後の空ではない行の代わりに、シート全体の最後の空でない行を見つけるだけで解決できます。

'  vvvvvv 
LstRw = Cells.Find(What:="*", SearchOrder:=xlRows, _ 
    SearchDirection:=xlPrevious, LookIn:=xlFormulas).Row 
+0

Ah!本当にありがとう、私はそれが何か簡単だと思ったが、_why_を動かすことができなかった。お疲れ様でした! – Aleizx

+0

@Aleizxようこそ、喜んで助けてください。 –

関連する問題