2017-01-13 2 views
1

У меня есть рабочий лист с несколькими столбцами и строками данных. Соответствующая часть данных начинается, когда в столбце a есть ячейка с некоторым текстом (например, ident).Указание переменной с ячейкой

Я пытаюсь использовать, если пройти через клетку до тех пор, пока не найдут клетку с «идентом» и возвращают номер строки (и присвоить переменный этот номер строки)

код я использую:

For Each Cell In ActiveSheet.Range("A") 
      If ActiveSheet.Cells.Value = "Ident" Then 
       start1 = ActiveCell.Row 
       Exit For 
      End If 
     Next Row 

Проблема в том, что срок ячейки дает мне ошибку (я, вероятно, ссылаюсь на нее неправильно). Что мне нужно использовать после «для каждого», чтобы пройти через ячейки в столбце А, в этом случае?

ответ

2
For Each cell In ActiveSheet.Range("A:A") 
    If cell.Value = "Ident" Then 
     start1 = cell.Row 
     Exit For 
    End If 
Next 

вы можете также рассмотреть эти две дополнительных стадии улучшения (от обоего логических и скорости точки зрения):

  • шаг 1

    петли только через клетку с некоторой постоянной величиной текста в нем

    For Each cell In ActiveSheet.Range("A:A").SpecialCells(xlCellTypeConstants, xlTextValues) 
        If cell.Value = "Ident" Then 
         start1 = cell.Row 
         Exit For 
        End If 
    Next 
    
  • шаг 2

    использовать Find() метод и избежать петли

    Set cell = ActiveSheet.Range("A:A").SpecialCells(xlCellTypeConstants, xlTextValues).Find(what:="ident", lookat:=xlWhole, LookIn:=xlValues, MatchCase:=True) 
    If Not cell Is Nothing Then start1 = cell.Row 
    

    , где вы оба должны всегда указать значения для LookIn, LookAt и MatchValue аргументов и тщательно выбирать их

+1

ошибки в коде были: 1) 'Range ("A")' -> 'Range ("A:") '2)' ActiveSheet.Cells.Value' -> 'cell.Value' 3) 'ActiveCell.Row' ->' cell.Row' 4) 'Next Row' ->' Next cell' (или просто 'Next') – user3598756

0

Другим вариантом для зацикливания через колонку ,

Option Explicit 

Public Sub TestMe() 

    Dim cell As Range 

    For Each cell In ActiveSheet.Columns(1).Cells 
     If cell.Value = "Ident" Then 
      Debug.Print cell.Row 
      Exit For 
     End If 
    Next cell 

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