Выход из For … Ранний следующий цикл (Microsoft Excel)
Если вы используете циклы For … Next в макропрограммировании (а кто этого не делает?), То вы должны знать, что они могут занять много времени. Вы можете минимизировать это, проверяя только то, что вам нужно. Например, рассмотрим следующий код, который проверяет массив, чтобы узнать, существует ли значение. Если нет, то он добавляет значение в конец массива. Если да, то стоимость не добавляется.
AddIt = False For J = 1 to NumEntries If NumValues(J) = ToAdd Then AddIt = True Next J If AddIt Then NumEntries = NumEntries + 1 NumValues(NumEntries) = ToAdd End If
Это отлично работает, но если массив становится большим, вы можете пройти цикл For … Next довольно много раз. Теперь рассмотрим следующий код, который выполняет ту же задачу, но раньше выпадает из цикла For … Next, если обнаружено совпадение.
AddIt = False For J = 1 to NumEntries If NumValues(J) = ToAdd Then AddIt = True Exit For End If Next J If AddIt Then NumEntries = NumEntries + 1 NumValues(NumEntries) = ToAdd End If
Теперь, если совпадение обнаруживается на ранней стадии цикла, все остальные итерации пропускаются, потому что встречается оператор Exit For и цикл в основном сразу же завершается. В результате макрос работает быстрее.
_Примечание: _
Если вы хотите узнать, как использовать макросы, описанные на этой странице (или на любой другой странице на сайтах ExcelTips), я подготовил специальную страницу, содержащую полезную информацию.
link: / excelribbon-ExcelTipsMacros [Щелкните здесь, чтобы открыть эту специальную страницу в новой вкладке браузера]
.
ExcelTips — ваш источник экономичного обучения Microsoft Excel.
Этот совет (2260) относится к Microsoft Excel 97, 2000, 2002 и 2003. Вы можете найти версию этого совета для ленточного интерфейса Excel (Excel 2007 и более поздних версий) здесь:
link: / excelribbon-Exiting_a_For_Next_Loop_Early [Ранний выход из цикла For … Следующий цикл]
.