Как пропустить все строки столбца в VBA?Пронумеруйте весь столбец, чтобы найти значение
Вот мой пример:
Function FindRow(Item As String, Rng As range) As Variant
Dim row As Integer
Dim col As Integer
For col = 1 To Rng.Columns.Count
For row = 1 To Rng.Rows.Count
If Rng.Cells(row, col).Value = Item Then
FindRow = row + Rng.row - 1
Exit Function
End If
Next row
Next col
FindRow = CVErr(XlCVError.xlErrNA)
End Function
Если мой диапазон один столбец, Rng.Columns.Count является 1 и Rng.Rows.Count является 1048576. Моей функции останавливается перед входом второй для. Если добавить часы на Rng.Cells (строка, столбец) .Value, я получил
<Application-defined or object-defined error>
в окне просмотра, но не всплывающие окна.
спасибо.
EDIT
Второе решение
Использование Rng.Find (Item) .Row
Function FindRow(Item As String, Rng As range) As Variant
FindRow = Rng.Find(Item).Row
End Function
/! \ Возвращает #VALUE вместо # N/A, если Пункт не находится в диапазоне
Почему вы Перебор более миллиона строк, когда вы можете просто использовать 'Range.Find()'? –
... или 'MATCH'? –
Но если вы хотите пройти через цикл, возможно, установите i = 1 и используйте «Do до i> Rng.Columns.Count», а в конце i = i + 1 –