2017-12-12 8 views
1

Ron de Bruinによって作成されたマクロがあります。これは、開いているファイルのテキストを置き換えるように変更しました。テキストを検索して置換するとVBAコードにエラーが発生する

私はコードを使用して複数のファイルを開いてデータを取得し、フィルタリングされた列のテキストを「有料にする」を「有料」に切り替えます。

私が抱えている問題は、テキストが見つからない場合です(このフィルタのレコードはありません)。コードが停止して完了しません。

このファイルをスキップして次のファイルに移動するためのコードはありますか?

'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 

    ActiveSheet.ListObjects("List1").Range.AutoFilter Field:=10, Criteria1:= _ 
    "<>" 
Columns("J:J").Select 
Selection.Replace What:="to be paid", Replacement:="paid", LookAt:=xlPart _ 
    , SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _ 
    ReplaceFormat:=False 

'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX 
    'Remove the AutoFilter 
    .AutoFilterMode = False 
      End With 
     End If 
     'Close the workbook without saving 
     mybook.Close savechanges:=True 
+0

前:「On Error Resume Next」と「On Error Goto 0」の後に?または 'もしNot Columns(" J:J ")がNothing Then' – danieltakeshi

答えて

0

「支払われる」と表示されているセルがある場合はチックができ、見つかった場合は置換を実行できます。

Dim FoundRange As Range 

    ActiveSheet.ListObjects("List1").Range.AutoFilter Field:=10, Criteria1:= _ 
    "<>" 
Columns("J:J").Select 

Set FoundRange = Selection.Find(what:="to be paid", LookIn:=xlFormulas, lookat:=xlWhole) 
if Not FoundRange is Nothing then 
Selection.Replace What:="to be paid", Replacement:="paid", LookAt:=xlPart _ 
    , SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _ 
    ReplaceFormat:=False 
End if 

    'Remove the AutoFilter 
    .AutoFilterMode = False 
      End With 
     End If 
     'Close the workbook without saving 
     mybook.Close savechanges:=True 
関連する問題