2017-01-05 3 views

ответ

2

здесь вы идете, но, пожалуйста, попытайтесь найти в гугле первый

Sub eachCell() 
    Dim c As Range 
    For Each c In Range("A1:D21") 
     If (c.Value = "mytext") Then 'if value of cell = "specific text" 
      c.Value = "other text" 'do this 
      Else 
      c.Value = "other text 2" 'do that 
     End If 
    Next c 
End Sub 
+0

Что такое значение 'c.value =«другой Text'? – user007

+0

это соответствует „сделать это“ в вашем коде. Он изменит значение ячейки в» другой текст " – nightcrawler23

0

Использование цикла Find будет быстрее, чем смотреть на каждую ячейку

Sub Sample_Find() 
    Dim rng1 As Range 
    Dim rng2 As Range 
    Dim bCell As Range 
    Dim ws As Worksheet 
    Dim SearchString As String 
    Dim FoundAt As String 


    Set ws = Worksheets(1) 
    Set rng1 = ws.Columns(1) 

    SearchString = "specific text" 

    Set rng2 = rng1.Find(SearchString, , xlValues, xlWhole) 

    If Not rng2 Is Nothing Then 
     Set bCell = rng2 
     FoundAt = rng2.Address 
     MsgBox "do something here " & FoundAt 
     Do 
      Set rng2 = rng1.FindNext(After:=rng2) 

      If Not rng2 Is Nothing Then 
       If rng2.Address = bCell.Address Then Exit Do 
       FoundAt = FoundAt & ", " & rng2.Address 
       MsgBox "do something here " & rng2.Address 
      Else 
       Exit Do 
      End If 
     Loop 
    Else 
     MsgBox SearchString & " not Found" 
     Exit Sub 
    End If 

    MsgBox "The Search String has been found these locations: " & FoundAt 
    Exit Sub 


End Sub 
+0

Почему бы не пойти на' AutoFilter', это было бы еще быстрее, нет? –

+0

Что такое автофильтр? Как его использовать? – user007

+0

@ShaiRado зависит от того, сколько совпадений - да, если много. – brettdj

0

Другой вариант, чтобы ответить на ваш пост, используя AutoFilter.

Код

Option Explicit 

Sub Test_AutoFilter() 

Dim ws As Worksheet 
Dim SearchString As String 
Dim Rng As Range 
Dim VisRng As Range 
Dim c As Range 

Set ws = Worksheets(1) 
Set Rng = ws.Columns(1) 

SearchString = "specific text" 

Rng.AutoFilter 
Rng.AutoFilter Field:=1, Criteria1:=SearchString 

' set another range to only visible cells after the Filter was applied 
Set VisRng = ws.Range(Cells(1, 1), Cells(1, 1).End(xlDown)).SpecialCells(xlCellTypeVisible) 

If Not VisRng Is Nothing Then 

    ' Option 1: show every cell that a SearchString was found 
    For Each c In VisRng 
     MsgBox "String match of " & SearchString & " found as cell " & c.Address 
    Next c 

    ' Option 2: show all the cells that SearchString was found (in 1 message) 
    MsgBox "String match of " & SearchString & " found as cells " & VisRng.Address 
End If 

End Sub 
+0

обработка ошибок для специальных ячеек (в случае отсутствия совпадений). – brettdj

+1

Я получаю сообщение об ошибке: 'autofilter method of ra nge class failed' – user007

Смежные вопросы