|
Тема |
Re: цикли с for... next... [re: vector_m] |
|
Автор |
zhitov (член) |
|
Публикувано | 12.08.11 09:22 |
|
|
Ти изпълни ли макроса стъпка по стъпка, да видиш какво точно става?
Според мен, цикълът си се завърта колкото трябва, просто условието If (Sheets("Януари").Cells(j, 1)) = (Sheets("База").Cells(j, 1)) Then не се изпълнява след 13-я ред.
Има няколко варианта за действие. Единият е да сложиш преди условието нещо подобно: Sheets("Януари").Cells(j, 10) = (Sheets("Януари").Cells(j, 1)) = (Sheets("База").Cells(j, 1)) Така в десета колона на Sheets("Януари") ще се изпише TRUE, ако условието е изпълнено или FALSE, ако условието не е изпълнено. Ако в десета колоно имаш данни, замени червената десятка с номера на някоя свободна колона от таблицата си.
Относно "цикъла с двете променливи" - това всъщност е цикъл с вложен цикъл и върши нещо доста по-различно от първия (с едната променлива). Първия цикъл сравнява (Sheets("Януари").Cells(j, 1)) само с клетката на ред j, колона 1 в Sheets("База") и ако условието е изпълнено, прави нещо. Цикъла с "двете променливи" сравнява (Sheets("Януари").Cells(j, 1)) с всяка клетка от масива A12:A100 на Sheets("База") и всеки път, когато срещне съвпадение прави нещо, като препокрива резултата от предишния цикъл.
Всъщност, по-сложно е за обяснение, отколкото за разбиране . Изпълни двата цикъла стъпка по стъпка и ще видиш разликата.
Редактирано от zhitov на 12.08.11 13:56.
|
| |
|
|
|