Страница: 1 |
Страница: 1 |
Вопрос: Do While
Добавлено: 23.01.08 11:32
Автор вопроса: Asisyi
Dim i As Long
i = 1
Do While ThisWorkbook.Worksheets("Список").Cells(i,1).Value = Empty
'Здесь действия в цикле
'Делаем, пока не встретится пустая ячейка
i = i + 1
Loop
Здрасте, а можно показать на примере, который бы соответствовал этим словам('Здесь действия в цикле
'Делаем, пока не встретится пустая ячейка )
Ответы
Всего ответов: 7
Номер ответа: 1
Автор ответа:
Gogic
Вопросов: 38
Ответов: 121
Профиль | | #1
Добавлено: 23.01.08 13:19
i = 1
Do While ThisWorkbook.Worksheets("Список".Cells(i,1).Value = Empty 'Делаем, пока не встретится пустая ячейка
Print "АХТУНГ!!!" 'Здесь действия в цикле
i = i + 1
Loop
Номер ответа: 2
Автор ответа:
astoro
ICQ: 649109
Вопросов: 31
Ответов: 391
Профиль | | #2
Добавлено: 23.01.08 18:32
подозреваю что данный код будет выполнятся пока не встретится НЕ пустая ячейка.
то биш
будет больше подходить к
Номер ответа: 3
Автор ответа:
ADSemenov.ru
Вопросов: 5
Ответов: 276
Web-сайт:
Профиль | | #3
Добавлено: 23.01.08 18:37
____ Мне думается, что более "корректно" было бы использовать функцию @Empty".
Номер ответа: 4
Автор ответа:
astoro
ICQ: 649109
Вопросов: 31
Ответов: 391
Профиль | | #4
Добавлено: 23.01.08 18:41
а с точки зрения аптимизации думаю лучше использовать несколько другую конструкцию, синтаксис которой я не помню
но там есть слово Until
do.....loop until (bool)
вроде этого
Номер ответа: 5
Автор ответа:
Gogic
Вопросов: 38
Ответов: 121
Профиль | | #5
Добавлено: 24.01.08 07:41
проглядел...
так
i = 1
Do While ThisWorkbook.Worksheets("Список".Cells(i,1).Value <> Empty 'Делаем, пока не встретится пустая ячейка
Print "АХТУНГ!!!" 'Здесь действия в цикле
i = i + 1
Loop
или так
i = 1
Do Until ThisWorkbook.Worksheets("Список".Cells(i,1).Value = Empty 'Делаем, пока не встретится пустая ячейка
Print "АХТУНГ!!!" 'Здесь действия в цикле
i = i + 1
Loop
Номер ответа: 6
Автор ответа:
astoro
ICQ: 649109
Вопросов: 31
Ответов: 391
Профиль | | #6
Добавлено: 24.01.08 10:36
лучше все таки сделать через Not
вроде бы он на порядок быстрее чем "неравно"
Номер ответа: 7
Автор ответа:
mc-black
ICQ: 308-534-060
Вопросов: 20
Ответов: 1860
Web-сайт:
Профиль | | #7
Добавлено: 24.01.08 18:16
дело не в скорости а в читаемости кода. хотя кому как нравится, я не настаиваю. после not ставить выражение в скобках совсем не обязательно. я использовал структуру типа
Dim i As Long
i = 4 'номер первой строки с данными
Do While Not ThisWorkbook.Worksheets("Список".Cells(i,1).Value = Empty
'Здесь действия в цикле, например
if [условие] then
'Ещё какие-то действия
end if
i = i + 1
Loop
в нескольких десятках разных макросов даже не задумываясь о самой этой структуре. как бы автоматически. кому не нравится придумывайте свой способ, а меня этот вполне устраивает пока. оптимизации по скорости переставляя знаки по сути большой не получишь, это же ЯВУ, а не ассемблер