Выражение
Rows("i:i").Select
выдает ошибку - Ряды() не будет распознавать текстовое значение «i: i» в качестве аргумента.
Rows(i).Select
будет работать. Но он не будет делать ничего, что вы можете видеть, кроме последней строки следует выбрать, когда код будет завершен. Вы можете сделать все, что нужно сделать, до строк «T» на следующем шаге вашего кода, прежде чем перейти к шагу Next i
.
EDIT: ОК, вы хотите, чтобы несколько строк были выбраны, когда код завершен. Это может быть сделано:
Dim RowsDescript As String
Dim trace As String
trace = "T"
Dim LR As Long, i As Long
LR = Range("M" & Rows.Count).End(xlUp).Row
For i = 1 To LR
If Left(Range("M" & i).Value, 1) = trace Then RowsDescript = RowsDescript & i & ":" & i & ","
Next i
If Len(RowsDescript) > 0 Then
RowsDescript = Left(RowsDescript, Len(RowsDescript) - 1) ' removes the last comma
Range(RowsDescript).Select
End If
То, что вы хотите, чтобы в конечном итоге является выражением, которое выглядит следующим образом:
Range("9:9,12:12,16:16").Select
Как вы там есть, когда строка идентифицируется как имеющий «T ", который вы хотите в нем, добавьте номер строки и двоеточие и номер строки снова и запятую в строку RowDescript. Таким образом, в конце цикла вы получаете строку, имеющую
9:9,12:12,16:16,
В этом нет необходимости. Но нам нужно снять эту последнюю запятую, так что есть проверка на ненулевую длину, удалить последний символ и затем выбрать эти строки.
Вы можете изменить '" i: i "' to 'i', но я не знаю, что это очень помогло бы. – pnuts
_ @ Michale72688_ Я рекомендую использовать метод Union, как показано [здесь] (http://stackoverflow.com/questions/25785628/how-to-add-to-current-cell-selection-in-excel-vba), потому что ваш цикл выбирает только текущую позицию вместо диапазона кратных строк. – Zegad