2017-12-15 9 views
0

実際のコードは、昨日までは正常に動作していましたが、今日はワークシートに2300行以上のデータが含まれていた場合、コードが最初に削除されます残りの300行を私に与えました。VBA:コードレビュー - フィールド削除の問題

私が使用K

の値

コード

Sub Delete_blank() 

With ActiveSheet 
    If .Autofiltermode = False Then Cells.Select 
    Selection.AutoFilter 
    ActiveSheet.Range ("$A$2:$C$") & lastrow.AutoFilter Field:=1, Criterial:="=" 
    ActiveSheet.Range ("$A$2:$C$") & lastrow.AutoFilter Field:=2, Criterial:="=" 
    ActiveSheet.Range ("$A$2:$C$") & lastrow.AutoFilter Field:=3, Criterial:="=" 

    Range ("A2:K2000").Select 
    Selection.EntireRow.Delete 
    ActiveSheet.ShowAllData 
    .AutoFilterMode = False 
End With 
End Sub 

'INPUT  : Sheet, the worksheet we'll search to find the last row 
'OUTPUT  : Long, the last occupied row 
'SPECIAL CASE: if Sheet is empty, return 1 
Public Function LastOccupiedRowNum(Sheet As Worksheet) As Long 
Dim lng As Long 
If Application.WorksheetFunction.CountA(Sheet.Cells) <> 0 Then 
    With Sheet 
     lng = .Cells.Find(What:="*", _ 
          After:=.Range("A1"), _ 
          Lookat:=xlPart, _ 
          LookIn:=xlFormulas, _ 
          SearchOrder:=xlByRows, _ 
          SearchDirection:=xlPrevious, _ 
          MatchCase:=False).Row 
    End With 
Else 
    lng = 1 
End If 
LastOccupiedRowNum = lng 
End Function 

を変更する以外に、このシナリオを置き換えるためにどんな解決策があり、問題はこのライン

Range ("A2:K2000".Select) 

である知っていますこのマクロコードを作成するためのマクロ関数を記録しました。

解決を手助けしてください。

ありがとうございました。

+1

あなたはこれをやろうとしていますか? 'Range(" A2:K2000 ")を選択してください。 – braX

+0

出力シートの最後の行を見つけるコードはすでにあります。入力シートの最後の行を見つけるのに似たようなものを使ってみませんか? –

+1

また 'If .Autofiltermode = False Then Cells.Select'が1行にあるので、それ以降の行は何が起きてもトリガーします。それはあなたが意図したものですか?あるいは、ブロック全体が 'If'ステートメントであると思われますか?また、 'lastrow'はどのように宣言されていますか? – BruceWayne

答えて

1

どのようにコードのあなたの行の交換について:

Range ("A2:K2000".Select) 

ようなもので:

ActiveSheet.Range("A2", ActiveCell.SpecialCells(xlLastCell)).Select 
+0

'ActiveSheet.Range(" A2 "、cells.SpecialCells(xlCellTypeLastCell)).. EntireRow.Delete'を意味します。 Specialセル参照は少しオフになっていました。セルを削除するにはセルを選択する必要はありませんが、これは私が行うことです。 –

+0

私は実際に上記をテストして、それは私のために期待どおりに動作しますが、ポインタのためにええ、ありがとう、確かにそれをチェックします... :) – Xabier

+0

ありがとう@フェルナンドジェイリベラ、空白のフィールドがない場合は、データを含む行が削除されます...そのための解決策はありますか? –