2017-06-14 164 views
0

我是新來的VBA在Excel中,有一個非常簡單的問題。我需要在列B中搜索特定的文本字符串Bath。如果它存在,那麼我需要BCab3替換特定文本字符串KCab在同一行的C列。我需要運行或循環,直到它檢查列B中的所有單元格。查找和替換文本

這裏是我到目前爲止,這是行不通的:

Sub Correct_Attribute_Suffix() 

    Dim c As Range 
    Dim SrchRng 

    Set SrchRng = ActiveSheet.Range("B3", ActiveSheet.Range("B65536").End(xlUp)) 
    Do 
     Set c = SrchRng.Find("BATH", LookIn:=xlValues) 
     If Not c Is Nothing Then Currentcell.Offset(, 1).Value = Replace("KCab", "K", "B") 

    Loop While Not c Is Nothing 

End Sub 
+1

您需要向我們展示一些代碼。你有什麼嘗試?此外,請不要在1個問題中提出2個問題 –

+0

這不是重複的...我編輯了問題以包含我的嘗試代碼請求@ David Brossard – MikeV

+0

[THIS](http://www.siddharthrout.com/ 2011/07/14 /查找和FindNext中功能於Excel的VBA /)將讓你開始 –

回答

1

這只是一個查找/ FindNext中使用操作偏移和替換來實現自己的屬性後綴的調整。

Sub Correct_Attribute_Suffix() 
    Dim fnd As Range, addr As String 

    With ActiveSheet.Range("B3", ActiveSheet.Range("B65536").End(xlUp)) 
     Set fnd = .Find(What:="BATH", After:=.Cells(.Cells.Count), LookIn:=xlFormulas, _ 
         LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, _ 
         MatchCase:=False, SearchFormat:=False) 
     If Not fnd Is Nothing Then 
      addr = fnd.Address 
      Do 
       fnd.Offset(0, 1) = Replace(fnd.Offset(0, 1).Value2, "KCab", "BCab3", 1, 1, vbTextCompare) 
       Set fnd = .FindNext(After:=fnd) 
      Loop While addr <> fnd.Address 
     End If 
    End With 
End Sub 
+0

代碼很好,謝謝你的幫助! – MikeV