< návrat zpět
MS Excel
Téma: VBA- 2 cykly mezi něma příkaz
Zaslal/a fostercz 16.2.2013 18:36
Zdravím předem děkuji za váš čas.
Vlastním makro , které jsem si vytvořil.
Sub spocitej()
Celkem_modra = "0"
Celkem_cervena = "0"
Dim sloupec As Integer
For sloupec = 5 To 20
If (Cells(1, sloupec).Font.Color = RGB(255, 0, 0)) Then Celkem_cervena = Celkem_cervena + 1
If (Cells(1, sloupec).Font.Color = RGB(0, 32, 96)) Then Celkem_modra = Celkem_modra + 1
Next sloupec
Cells(1, 2).Value = Celkem_modra & ":" & Celkem_cervena
End Sub
Tohle makro má zadán cykl zkontrolovat řádek 1 od sloupce 5 do sloupce 20 nalézt červené a modré buňky ty sečíst a zapsat do Cells(1, 2).(Funguje to.)
Co potřebuji a pokoušel jsem se o to bez úspěchu ?
Udělat tohle pro všechny řádky automaticky.
----
Pokošel jsem se o to sám.
Sub spocitej()
Celkem_modra = "0"
Celkem_cervena = "0"
Dim sloupec As Integer, radek As Integer
For sloupec = 5 To 20
For radek = 1 To 4000
If (Cells(radek, sloupec).Font.Color = RGB(255, 0, 0)) Then Celkem_cervena = Celkem_cervena + 1
If (Cells(radek, sloupec).Font.Color = RGB(0, 32, 96)) Then Celkem_modra = Celkem_modra + 1
Next sloupec
Cells(radek, 2).Value = Celkem_modra & ":" & Celkem_cervena
Next radek
End Sub
Někde mám totální blbost neumím to zapsat, teď vím že by 2 cykly měli končit zároveň ale jak to napsat ?
Uzamčeno - nelze přidávat nové příspěvky.
Opičák(16.2.2013 20:05)#011689 nezkoušel jsem nic, jen se mi zdá, že NEXT sloupec a NEXT radek je třeba prohodit
citovat
fostercz(16.2.2013 20:08)#011690 Teď víc prohlížím knížku Excel 2007 programování Vba.Narazil jsem na příkaz Exit For tím by se daly ty ckly od sebe oddělit.
citovat
Opičák(16.2.2013 20:21)#011691 Exit For je pro předčasné ukončení cyklu, např. je-li splněna dříve jiná podmínka než je dopočítat od A do B
tedy for x = A to B
citovat
fostercz(16.2.2013 20:59)#011693 Tak po přehození nastala změna
Sub spocitej()
Celkem_modra = "0"
Celkem_cervena = "0"
Dim sloupec As Integer, radek As Integer
For radek = 1 To 3889
For sloupec = 5 To 20
If (Cells(radek, sloupec).Font.Color = RGB(255, 0, 0)) Then Celkem_cervena = Celkem_cervena + 1
If (Cells(radek, sloupec).Font.Color = RGB(0, 32, 96)) Then Celkem_modra = Celkem_modra + 1
Next sloupec
Cells(radek, 2).Value = Celkem_modra & ":" & Celkem_cervena
Next radek
End Sub
Ale pamět si pořád pomatuje udáje z předchozích řádků a příčítá je.
citovat
fostercz(16.2.2013 21:01)#011694 Teď vše v pořádku
Sub spocitej()
Celkem_modra = "0"
Celkem_cervena = "0"
Dim sloupec As Integer, radek As Integer
For radek = 1 To 3889
For sloupec = 5 To 20
If (Cells(radek, sloupec).Font.Color = RGB(255, 0, 0)) Then Celkem_cervena = Celkem_cervena + 1
If (Cells(radek, sloupec).Font.Color = RGB(0, 32, 96)) Then Celkem_modra = Celkem_modra + 1
Next sloupec
Cells(radek, 2).Value = Celkem_modra & ":" & Celkem_cervena
Celkem_modra = "0"
Celkem_cervena = "0"
Next radek
End Sub
citovat
fostercz(16.2.2013 21:04)#011695 Opičáku Děkuju jsi chytrá opice.
citovat
misocko(17.2.2013 11:13)#011701 do buducna, ak sa chysats robit s makrami tak Ti odporucam pre testovanie kodu pridat niekde do cyklu oznacenie bunky s ktorou ides pracovat v tvorom pripade "Cells(radek, sloupec).Select", a vipasat hodnoty premennych taktiez niekde v cykle najlepsie asi cez MsgBox(Celkem_modra), MsgBox(Celkem_cervena) a s tymto odkrokovat cez F8 v editore VBA. tieto pomocky mozes lubovolne presuvat v kode a zistis kde ti co pocita zle. tieto pomocky po otestovani vyhodit (alebo oznacit ako poznamku) , spomaluju makro.
citovat
Dingo(18.2.2013 9:05)#011721 Jenom úplně jednoduchá věc. Zvykl jsem si, když sepisuju kód, jakmile napíšu For i=1 To ...atd. hned zato si dám řádek Next i - a teprve potom dávám příkazy mezi to.
citovat
fostercz(18.2.2013 17:52)#011727 Díky za ty rady
citovat