Страницы: 1
RSS
Ошибка применения циклов FOR
 
Уважаемые знатоки! Пытаюсь написать макрос который возвращает таблицу умножения на листе. Однако макрос возвращает ошибку, то есть не срабатывает.
Код
Sub Test()
For Stroka = 1 To 10
    For Stolbec = 1 To 10
       Cells(Stroka, Stolbec) = Stroka * Stolbec
           Next Stroka
               Next Stolbec
End Sub

Стоить мне поменять местами и сначала написать Next Stolbec  а потом Next Stroka,то макрос работет правильно. В чем фишка? Какая разница если я первым напишуNext Stroka  а потом Next Stolbec ?

Вот этот макрос работает правильно
Код
Sub Test()

For Stroka = 1 To 10
    For Stolbec = 1 To 10
       Cells(Stroka, Stolbec) = Stroka * Stolbec
           Next Stolbec
               Next Stroka
End Sub
Спасибо за ответы заранее.

С уважением Самир, Баку
 
Вы уже сами нашли ошибку.
Вложенные функции должны быть вложенными, а не перекрывать друг друга:
Код
1
   2
      3
      3
   2
1
 
Честно говоря не совсем понял :( Как это перекрывать?
 
Каждый Next отвечает за свой For. И он должен закрывать именно его. Т.е если поменяли Next - надо менять местоположение и For. Или неверно понял проблему.
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
 
Кажется дошло! Позднее зажигание как говорится! Спасибо большое Vikktur и The_Prist !  Вы находки этого форума!
 
Можно было после Next вообще не указывать Stolbec и Stroka - VBA сам разберётся, где какой Next ))
 
Спасибо Юрий ! Очень оригинально! Я написал просто Next Next и все получилось. Это только в этом случае или в других кодах тоже можно так делать?
 
Цитата
Самир Мамедов написал: Это только в этом случае или в других кодах тоже можно так делать?
на вба - везде можно просто Next
Указание на переменную вида "Next Stroka" только для удобочитаемости кода, чтобы самому не запутаться, где какой цикл заканчивается.
Bite my shiny metal ass!      
 
Лузер, спасибо за ответ. Для меня это было открытием. Что по мне, то мне удобно наоборот везде только Next Next писать.
 
Самир Мамедов, еще вариант
Код
Sub Test()

  For Stroka = 1 To 10
    For Stolbec = 1 To 10
      Cells(Stroka, Stolbec) = Stroka * Stolbec
  Next Stolbec, Stroka
End Sub
Страницы: 1
Читают тему
Наверх