Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - VBA

Страница: 1 |

 

  Вопрос: Аналог break/continue Добавлено: 28.08.08 12:08  

Автор вопроса:  Yoshie
Уважаемые специалисты, не могу найти, существует ли в vba что-то, что поможет рещить конструкцию типа


For i = 1 To 10
    For j = 1 To 20
          If Какое-то условие от (i,j)=True Then
              MsgBox j

вот здесь надо перейти на следующее i, т.е. при данном i поиск по j уже не нужен

          End If
    Next j
Next i

Ответить

  Ответы Всего ответов: 14  

Номер ответа: 1
Автор ответа:
 андрей



Вопросов: 6
Ответов: 9
 Профиль | | #1 Добавлено: 28.08.08 12:29
Exit For
вроде должно помочь в данной ситуации

Ответить

Номер ответа: 2
Автор ответа:
 Yoshie



Вопросов: 4
Ответов: 11
 Профиль | | #2 Добавлено: 28.08.08 12:35
Да, помогло! Спасибо!


Не хочу делать отдельную тему - как сохранить лист как *.txt с разделителями табуляция?

Ответить

Номер ответа: 3
Автор ответа:
 Jasmin



Вопросов: 23
Ответов: 417
 Профиль | | #3 Добавлено: 28.08.08 12:35
Точно поможет.

Ответить

Номер ответа: 4
Автор ответа:
 Jasmin



Вопросов: 23
Ответов: 417
 Профиль | | #4 Добавлено: 28.08.08 12:37
Что-то вроде:
ActiveWorkbook.SaveAs Filename:= _
    "C:\Book1.txt", FileFormat:= _
    xlText, CreateBackup:=False

Ответить

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



Вопросов: 5
Ответов: 276
 Web-сайт: www.adsemenov.ru
 Профиль | | #5
Добавлено: 28.08.08 13:41
    А если надо выйти из "многомерного" цикла куда-то в середину, то можно использовать фиктивную конструкцию Do ... if (тырыпыры) Then Exit Do ... Loop False

Ответить

Номер ответа: 6
Автор ответа:
 Yoshie



Вопросов: 4
Ответов: 11
 Профиль | | #6 Добавлено: 28.08.08 13:44
Что-то это как-то запутано. По-моему, Exit for в теле прерываемого цикла более понятен :) Для не супермега )

Ответить

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



Вопросов: 5
Ответов: 276
 Web-сайт: www.adsemenov.ru
 Профиль | | #7
Добавлено: 28.08.08 14:22
    Это Вы зря. Если необходимо в тройном цикле выйти "срочно" из третьего уровня в первый, то иного, более простого, пути нет, как только через эту фиктивную конструкцию.
    В каких-то старых языках была возможность идентифицировать вложенность. Например, в Next можно указать переменную цикла. Если бы это можно было сделать и в Exit For, то тогда бы эта проблема имела простое решение — можно было бы из любого места вложенного цикла выйти из любого уровня внешних циклов по указанию переменной этого цикла.
    Последний раз эту конструкцию исползовал в PHP.

Ответить

Номер ответа: 8
Автор ответа:
 Yoshie



Вопросов: 4
Ответов: 11
 Профиль | | #8 Добавлено: 28.08.08 14:26
Да, соглашусь. Тоже разочарована отсутствием возможности Exit for Счётчик


Jasmin
метод сохранения почему-то у меня не работает:(
Он сохраняет, но текст идёт подряд без разделителей. Пошла детально разковырёвывать свойства save as - а

Ответить

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



ICQ: 308-534-060 

Вопросов: 20
Ответов: 1860
 Web-сайт: mc-black.narod.ru/dzp.htm
 Профиль | | #9
Добавлено: 28.08.08 16:14
ADSemenov.ru
Если необходимо в тройном цикле выйти "срочно" из третьего уровня в первый, то иного, более простого, пути нет, как только через эту фиктивную конструкцию.

Метка&Goto - самый простой способ, многие сильно стесняются его применять, т.к. он нарушает теоретические принципы структурного программирования. Тем не менее крайне редко бывает такая необходимость выходить на k уровней циклов из n, так можно применить несколько раз Exit For / Exit Do

Ответить

Номер ответа: 10
Автор ответа:
 Yoshie



Вопросов: 4
Ответов: 11
 Профиль | | #10 Добавлено: 28.08.08 16:23
Не стесняются, просто изначально втулили в голову, что это в программировании жлобство))

Ответить

Номер ответа: 11
Автор ответа:
 Jasmin



Вопросов: 23
Ответов: 417
 Профиль | | #11 Добавлено: 28.08.08 18:42
Ну я тоже его не использую. Как-то не страдаю особо от этого. :-) Не нравиться мне скакать туда-сюда по тексту. Без перехода кажется логичней. :-)

To Yoshie: Извини, писала на скорую руку. Хотелось указать направление копания хотя бы. Что бы человек пока покапался, попробовал. Что бы время не терял. :-)

Ответить

Номер ответа: 12
Автор ответа:
 Artyom



Разработчик

Вопросов: 130
Ответов: 6602
 Профиль | | #12 Добавлено: 28.08.08 20:40
GOTO увы. Проще не сделать.

Ответить

Номер ответа: 13
Автор ответа:
 Sharp


Лидер форума

ICQ: 216865379 

Вопросов: 106
Ответов: 9979
 Web-сайт: sharpc.livejournal.com
 Профиль | | #13
Добавлено: 28.08.08 22:54
Можно попробовать return

Ответить

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



ICQ: 308-534-060 

Вопросов: 20
Ответов: 1860
 Web-сайт: mc-black.narod.ru/dzp.htm
 Профиль | | #14
Добавлено: 29.08.08 15:41
Как ни извращайтесь, в конечном счете процессоры для изменения порядка выполнения кода понимают только разновидности jXX, retn и loop.

Ответить

Страница: 1 |

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



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