Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Excel
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 23.01.2012, 13:51   #1
n1l
Пользователь
 
Регистрация: 20.01.2012
Сообщений: 12
По умолчанию Перестать выполнять вложенный цикл если условие истинно

В общем есть код


Код:
For k = 4 To x
  lTarif(k) = Sheets("реестр").Cells(k, 19).Value
  lPod(k) = Sheets("реестр").Cells(k, 3).Value
    For f = 3 To y
      For h = 4 To z
      '==================================================
      '==== условие проверки на тариф по умолчанию ======
      '==================================================
        If Sheets("реестр").Cells(h, 19).Value = Empty Then
          If lPod(k) = PodArray(f) Then
             Sheets("реестр").Cells(k, 14).Value = matrix(f, 4)
          End If
      '==========================================
      '==== Если указан код тарифа в листе ======
      '==========================================
        Else
          If (lPod(k) = PodArray(f)) And (lTarif(k) = Sheets("реестр").Cells(h, 19).Value) Then
           Sheets("реестр").Cells(k, 14).Value = matrix(f, h)
          End If
        End If
        
      Next
    Next
  Next
как сделать так что бы цикл при нахождении подходящего условия в одном из своих шагов перестал выполнятся и перешоол на проверку другой переменной?

PS
кому нужен файл во вложении, знайте он там.
Вложения
Тип файла: rar реестр.rar (17.3 Кб, 11 просмотров)
n1l вне форума Ответить с цитированием
Старый 23.01.2012, 13:53   #2
Казанский
Старожил
 
Аватар для Казанский
 
Регистрация: 31.12.2010
Сообщений: 2,133
По умолчанию

exit for '
exceleved@yandex.ru Яндекс.Деньги: 410011500007619
Казанский вне форума Ответить с цитированием
Старый 23.01.2012, 14:43   #3
n1l
Пользователь
 
Регистрация: 20.01.2012
Сообщений: 12
По умолчанию

Я имел ввиду, как объяснить ему что хватит? Что то типа if true then...
как это сделать?
n1l вне форума Ответить с цитированием
Старый 23.01.2012, 14:47   #4
n1l
Пользователь
 
Регистрация: 20.01.2012
Сообщений: 12
По умолчанию

Дополнительное условие типа...
n1l вне форума Ответить с цитированием
Старый 23.01.2012, 14:53   #5
IgorGO
Новичок
СтарожилДжуниор
 
Аватар для IgorGO
 
Регистрация: 05.02.2008
Сообщений: 9,487
По умолчанию

во внутреннм цикле:
если ПОЛУЧИЛОСЬ then Time2Exit = true: exit for

во внешнем цикле:
if Time2Exit then exit for
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете

Последний раз редактировалось IgorGO; 23.01.2012 в 15:13.
IgorGO вне форума Ответить с цитированием
Старый 23.01.2012, 15:06   #6
Казанский
Старожил
 
Аватар для Казанский
 
Регистрация: 31.12.2010
Сообщений: 2,133
По умолчанию

Если нужно выйти из всех циклов по условию, проверяемому во внутреннем цикле, можно использовать GoTo:
Код:
for i=1 to 3
  for j=5 to 8
    for each x in MyArray
      if SomeCondition then goto ExitAllLoops
    next
  next
next
ExitAllLoops:
Для идеологических противников Goto такой вариант:
Код:
Do
  for i=1 to 3
    for j=5 to 8
      for each x in MyArray
        if SomeCondition then exit do
      next
    next
  next
Loop until true
exceleved@yandex.ru Яндекс.Деньги: 410011500007619

Последний раз редактировалось Казанский; 23.01.2012 в 15:09.
Казанский вне форума Ответить с цитированием
Старый 24.01.2012, 09:57   #7
slan
Форумчанин
 
Аватар для slan
 
Регистрация: 30.01.2008
Сообщений: 314
По умолчанию

Do
for i=1 to 3
for j=5 to 8
for each x in MyArray
if SomeCondition then exit do
next
next
next
Loop until true

эт хорошо. до такого не додумывался..

но и не идеолог..

Последний раз редактировалось slan; 24.01.2012 в 10:02. Причина: штрихи
slan вне форума Ответить с цитированием
Старый 24.01.2012, 20:48   #8
Казанский
Старожил
 
Аватар для Казанский
 
Регистрация: 31.12.2010
Сообщений: 2,133
По умолчанию

Слэн,
я не сам додумался, подсказали
http://forum.ixbt.com/topic.cgi?id=23:31044
exceleved@yandex.ru Яндекс.Деньги: 410011500007619
Казанский вне форума Ответить с цитированием
Старый 25.01.2012, 15:09   #9
slan
Форумчанин
 
Аватар для slan
 
Регистрация: 30.01.2008
Сообщений: 314
По умолчанию

все равно респект, ибо там-то это было вообще ни к чему..
а здесь в самый раз

хотя goto все же мне больше нравится
slan вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Тема: Вложенный цикл. Кристина Н Паскаль, Turbo Pascal, PascalABC.NET 3 04.12.2011 21:06
Найти все трехзначные простые числа ( большее 1, не имеющее других делителей, кроме 1 и самого себя) Вложенный цикл Кристина Н Паскаль, Turbo Pascal, PascalABC.NET 14 02.12.2011 20:08
Двойной вложенный цикл haim Паскаль, Turbo Pascal, PascalABC.NET 1 30.01.2011 02:13
вложенный цикл FOR в вызываемой функции lifeton Общие вопросы Delphi 6 02.06.2010 17:35
Switch вложенный в бесконечный цикл coper Общие вопросы C/C++ 2 16.11.2009 02:31