Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - VBA

Страница: 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
Dim i As Long
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
подозреваю что данный код будет выполнятся пока не встретится НЕ пустая ячейка.

то биш
Do While not (ThisWorkbook.Worksheets("Список";).Cells(i,1).Value = Empty)

будет больше подходить к
'Делаем, пока не встретится пустая ячейка

Ответить

Номер ответа: 3
Автор ответа:
 ADSemenov.ru



Вопросов: 5
Ответов: 276
 Web-сайт: www.adsemenov.ru
 Профиль | | #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
проглядел...

так
Dim i As Long
i = 1
Do While ThisWorkbook.Worksheets("Список";).Cells(i,1).Value <> Empty 'Делаем, пока не встретится пустая ячейка
    Print "АХТУНГ!!!" 'Здесь действия в цикле
i = i + 1
Loop


или так
Dim i As Long
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
ThisWorkbook.Worksheets("Список";).Cells(i,1).Value <> Empty


лучше все таки сделать через Not
вроде бы он на порядок быстрее чем "неравно"

Ответить

Номер ответа: 7
Автор ответа:
 mc-black



ICQ: 308-534-060 

Вопросов: 20
Ответов: 1860
 Web-сайт: mc-black.narod.ru/dzp.htm
 Профиль | | #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

в нескольких десятках разных макросов даже не задумываясь о самой этой структуре. как бы автоматически. кому не нравится придумывайте свой способ, а меня этот вполне устраивает пока. оптимизации по скорости переставляя знаки по сути большой не получишь, это же ЯВУ, а не ассемблер ;)

Ответить

Страница: 1 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам