Клубове Дир.бг
powered by diri.bg
търси в Клубове diri.bg Разширено търсене

Вход
Име
Парола

Клубове
Dir.bg
Взаимопомощ
Горещи теми
Компютри и Интернет
Контакти
Култура и изкуство
Мнения
Наука
Политика, Свят
Спорт
Техника
Градове
Религия и мистика
Фен клубове
Хоби, Развлечения
Общества
Я, архивите са живи
Клубове Дирене Регистрация Кой е тук Въпроси Списък Купувам / Продавам 14:07 13.07.25 
Компютри и Интернет
   >> Електронни таблици
*Кратък преглед

Тема цикли с for... next...  
Автор vector_m (непознат )
Публикувано11.08.11 17:00



Здравейте !
Ще погледнете ли сорса:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
For j = 12 To 100
If (Sheets("Януари").Cells(j, 1)) = (Sheets("База").Cells(j, 1)) Then
Sheets("База").Cells(j, 4) = Sheets("Януари").Range("AM" & j)
Sheets("База").Cells(j, 5) = Sheets("Януари").Range("AK" & j)

End If
Next j
End Sub

Защо се цикъла се завърта само два пъти , тоест отпечатва стойности само в 12 и 13 ред .
Пробвах да използвам две променливи: J- за sheets(Януари) и N- за sheets(База)
и докато не се завъртят и двата цикъла не мога да въвеждам данни ,тоест програмата забива !
Ето сорса с две променливи
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
For j = 12 To 100
For N = 12 To 100
If (Sheets("Януари").Cells(j, 1)) = (Sheets("База").Cells(N, 1)) Then
Sheets("База").Cells(N, 4) = Sheets("Януари").Range("AM" & j)
Sheets("База").Cells(N, 5) = Sheets("Януари").Range("AK" & j)

End If
Next N
Next j

End Sub

А ако използвам само една променлива и за sheets(Януари) и sheets(База) тоест използвам само един цикъл то той се завърта само 2 пъти .
Каде бъркам?

<P ID="edit"><FONT class="small"><EM>Редактирано от vector_m на 11.08.11 17:04.</EM></FONT></P>

Редактирано от vector_m на 11.08.11 17:09.



Тема 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.



Тема Re: цикли с for... next...нови [re: zhitov]  
Автор vector_m (непознат )
Публикувано15.08.11 18:27



Разбрах , защо не се отпечатват всички записи...
защото между списъка от записи има празни редове или записи, които не съвпадат с търсените и , когато брояча попадне на ред, в който се съдържат различни данни от търсените, то той спира.
Въпроса ми е, как при търсене на съвпадащи данни, брояча да не спира , ако стигне до ред, който е празен или данни различни от търсените, а да ги игнорира и да продължи да отпечатва записите съвпадащи с търсените ...
Прилагам линк за да видите нагледно ....
http://tranzit.dir.bg/load.php?id=hfL1uftudNJRlJG5935036




*Кратък преглед
Клуб :  


Clubs.dir.bg е форум за дискусии. Dir.bg не носи отговорност за съдържанието и достоверността на публикуваните в дискусиите материали.

Никаква част от съдържанието на тази страница не може да бъде репродуцирана, записвана или предавана под каквато и да е форма или по какъвто и да е повод без писменото съгласие на Dir.bg
За Забележки, коментари и предложения ползвайте формата за Обратна връзка | Мобилна версия | Потребителско споразумение
© 2006-2025 Dir.bg Всички права запазени.