Поиск последней строки с текстом с помощью цикла выполнения

#vba

#vba

Вопрос:

Пожалуйста, извините мою неопытность,

Я должен написать функцию, которая возвращает последнюю строку, которая возвращает непустую строку в столбце 1, используя цикл выполнения.

Комментарии:

1. Не могли бы вы привести нам пример кода?

2. Обязательно ли использовать цикл выполнения?

3. Если это домашнее задание, вы должны получить «А» за то, что сказали, что эта задача совершенно не подходит для цикла выполнения. 🙂 Вы могли бы решить эту проблему с помощью стандартной функции Excel, или с помощью VBA вы бы либо использовали Find, либо поиск первой неиспользуемой ячейки снизу с помощью xlUp. Вы бы никогда не использовали цикл выполнения.

4. В случае, если вам интересно, почему, проблема с конструкцией цикла выполнения заключается в том, что условие выхода никогда не может быть истинным. Если в столбце нет пустых строк, когда VBA достигает последней строки и пытается выбрать следующую ячейку, вы получаете сообщение об ошибке, потому что вы выходите за пределы листа. Кроме того, вы должны прочитать значение каждой ячейки для проверки!!! Другая большая ошибка в конструкции — цикл выполнения внутри цикла выполнения 🙂

5. Использование вложенных циклов вообще не является ошибкой конструкции, я действительно не знаю, почему вы это говорите.

Ответ №1:

Если пустых строк нет, вы можете просто использовать что-то вроде этого :

 Public Sub MySub()

    Dim wsTarget As Worksheet
    Set wsTarget = ActiveSheet

    Dim n As Integer
    n = 1

    Do While (wsTarget.Cells(n  1, 1).Value <> "")
        n = n   1
    Loop

    n = n - 1

    'n now contains the line number of the last non-empty row.

End Sub
  

Редактировать : для этого примера, я полагаю, вы просматриваете первый столбец, и данные начинаются со строки 2. Если строк с данными нет, n будет равно 1.

Комментарии:

1. Я отредактировал вашу wsTarget строку, чтобы просмотреть рабочий лист, а не рабочую книгу. В качестве исключения vbNullString и «» оба признают, что ячейка с ' пуста. IsEmpty правильно увидит, что такая ячейка не является пустой

2. Ему нужна ФУНКЦИЯ, которая возвращает значение, а не вложенный файл!

3. Да, но ему также необходимо создать объект нового типа, поскольку «collumn» не существует. Я хочу сказать, что это решение дает ключевые элементы того, как это сделать с помощью цикла, а не полное решение. В реальном макросе вы обычно не вводите жестко такие вещи, как номер столбца, первая строка и т. Д.