2017-01-03 32 views
0

特定のテキストが見つかると、このスクリプトを使用して隣接セルの内容を消去します。しかし、現在の地域から厳密に列AからTまでの範囲を変更する方法はわかりません。ActiveSheet.Range("A:T").Selectを試しましたが、うまくいかなかったのです。VBA範囲の選択

ご協力いただければ幸いです。ここでは、コードは次のようになります。

Sub Clear_Text() 
    Dim rng1 As Range 
    Dim rng2 As Range 
    Set rng1 = ActiveSheet.Range("A1").CurrentRegion 

    For Each rng2 In rng1 
     If rng2 Like "Error" Or _ 
     rng2 Like "Mistake" Then rng2.Offset(, 1).ClearContents 
    Next 
End Sub 
+0

「タイプの不一致」が表示されます。まだエラーです。私はそれが範囲外に出ていたからだと思ったが、おそらくコードに別の問題があるだろうか? – Brock

+0

Try: 'Set rng1 = ActiveSheet.Columns(" A:T ")。セル。 –

答えて

1

A:Tに検索範囲を制限するために、このようにそれを試してみてください。

Sub Clear_Text() 
    Dim cl As Range 

    For Each cl In ActiveSheet.Range("A1:T" & Range("A1").CurrentRegion.Rows.Count) 
     If cl Like "Error" Or cl Like "Mistake" Then 
      cl.Offset(0, 1).ClearContents 
     End If 
    Next 
End Sub 
+0

あなたは最高です!ありがとう、素晴らしい仕事! – Brock

3

与えられた範囲のすべてのセルをループする時間は、使用でき

を消費する可能性がありFind()関連するセルにジャンプする機能:

Option Explicit 

Sub Clear_Text() 
    With Range("T1", Cells(Rows.Count, "A").End(xlUp)) 
     CheckAndClear .Cells, "Error" 
     CheckAndClear .Cells, "Mistake" 
    End With 
End Sub 

Sub CheckAndClear(rng As Range, strng As String) 
    Dim f As Range 
    Dim firstAddress As String 

    With rng 
     Set f = .Find(what:=strng, LookIn:=xlValues, lookat:=xlPart) '<--|with 'lookat:=xlPart' parameter specification makes you catch cell that contains the searched string 
     If Not f Is Nothing Then 
      firstAddress = f.Address 
      Do 
       f.Offset(, 1).ClearContents 
       Set f = .FindNext(f) 
      Loop While f.Address <> firstAddress 
     End If 
    End With 
End Sub 
+0

それは素晴らしい作品です!どうもありがとうございます! – Brock

+0

すごく早い! – Brock

+0

ようこそ。あなたは受け入れられたとして回答をマークしたいかもしれません。ありがとうございました! – user3598756