2014-02-18 76 views
0

現在我正在使用下面的宏來替換大數據中的值。但問題是,替換值或替換值隨着每個數據集而變化,如果沒有找到需要的值,則宏發出錯誤。任何人都可以幫助我,我如何使用IF條件與Cells.replace。例如IFD找到然後運行這個代碼塊,否則跳轉到下一個值。使用IF條件查找和替換

Sub ReplaceAll() 

Application.ScreenUpdating = False 

Sheets("Data").Select 
Range("A1").Select 

Cells.replace what:="D", Replacement:="", LookAt:=xlPart, SearchOrder:= _ 
    xlByRows, MatchCase:=False, SearchFormat:=False, ReplaceFormat:=False 

Cells.replace what:="F", Replacement:="", LookAt:=xlPart, SearchOrder:= _ 
    xlByRows, MatchCase:=False, SearchFormat:=False, ReplaceFormat:=False 

Application.ScreenUpdating = True 

End Sub 
+1

當搜索項沒有找到時,我不會收到錯誤... –

+1

相同,沒有錯誤觸發 – sam092

回答

0

我不明白爲什麼會出現錯誤,但可以跳過所有錯誤。

Sub ReplaceAll() 

Application.ScreenUpdating = False 

On Error Resume Next 'Skip errors 

Sheets("Data").Select 
With Range("A1") 
    .Cells.replace what:="D", Replacement:="", LookAt:=xlPart, SearchOrder:= _ 
    xlByRows, MatchCase:=False, SearchFormat:=False, ReplaceFormat:=False 

    .Cells.replace what:="F", Replacement:="", LookAt:=xlPart, SearchOrder:= _ 
    xlByRows, MatchCase:=False, SearchFormat:=False, ReplaceFormat:=False 
End With 

On Error Goto 0 'Errors will be handled again 
Application.ScreenUpdating = True 

End Sub 

但是更好的解決方案是處理您的錯誤。
this link以獲取有關Error handling in VBA

此外,你應該儘量避免使用Select,因爲它會減慢你的宏非常多。

+0

感謝您的回覆傢伙。我用錯誤這個詞。從錯誤我的意思是每次使用新的數據集都會改變場景。大多數情況下,我的數據與像1600D這樣的字母表相關的digite結尾我想要類似macor的東西找到該值,如果發現它,而不是將其替換爲我已存儲在宏中的任何值,並且如果未找到值,則轉到下一個塊的代碼。 – Viki