2016-12-20 19 views
0

Val4という名前の参照セルに対応するデータを検索し、その範囲を削除したいと考えています。私は行全体またはその行の内容だけを削除するために働くが、私は行全体の代わりに範囲( "L:M")を削除したいと思います。ここに私のコードの一部です:Entirerow.Clearcontentsに代わり

Sheets("Sheet1").Select 

    Last = Cells(Rows.Count, "L").End(xlUp).Row 
    For I = Last To 1 Step -1 
     If (Cells(I, "L").Value) = Val4 Then 
    'Cells(I, "L").ClearContents ' USE THIS TO CLEAR CONTENTS BUT NOT DELETE ROW 
      'Cells(I, "A").EntireRow.Delete USE THIS TO DELETE ENTIRE ROW 
      GoTo NextSheet1 
     End If 
    Next I 

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

ロス

+1

'シート( "シート1")を。 ClearContents' –

+0

シート( "シート1")範囲( "シート1")セル(シート ""シート1 " M ")。Value = vbNullString – Ricky

+0

http://stackoverflow.com/question s/38455405/what-of-the-difference-between-value-and-clearcontents – Ricky

答えて

0

あなたはセルを介してAutoFilter()ないループに使用することができ

Intersect(Sheets("Sheet1").Range("L:M"), Sheets("Sheet1").Rows(i)).ClearContents 

を使用することができますが、あなたのコードをスピードアップするために:

With Sheets("Sheet1") '<--1 reference your sheet 
    With .Range("M1", .Cells(.Rows.Count, "L").End(xlUp)) '<--| reference its column L:M cells from row 1 down to column "L" last not empty row 
     .AutoFilter field:=1, Criteria1:=Val4 '<--| filter referenced range on its 1st column (i.e. column "L") with Val4 
     If Application.WorksheetFunction.Subtotal(103, .Resize(, 1)) > 1 Then '<--| if any cell filtered other than header one (in row1) 
      .Resize(.Rows.Count - 1).Offset(1).SpecialCells(xlCellTypeVisible).ClearContents '<--|clear filtered referenced cells 
     End If 
    End With 
    .AutoFilterMode = False 
End With 
+0

Intersectはコードの問題をうまく解決しました。 – FrenchieRab

+0

ヘルプありがとうございました。 – FrenchieRab

+0

あなたは歓迎です – user3598756