#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» не существует. Я хочу сказать, что это решение дает ключевые элементы того, как это сделать с помощью цикла, а не полное решение. В реальном макросе вы обычно не вводите жестко такие вещи, как номер столбца, первая строка и т. Д.