< návrat zpět

MS Excel


Téma: VBA- 2 cykly mezi něma příkaz rss

Zaslal/a 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. 3

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 ?

stop Uzamčeno - nelze přidávat nové příspěvky.

#011689
Opičák
nezkoušel jsem nic, jen se mi zdá, že NEXT sloupec a NEXT radek je třeba prohoditcitovat
#011690
avatar
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
#011691
Opičák
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 Bcitovat
#011693
avatar
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


3 Ale pamět si pořád pomatuje udáje z předchozích řádků a příčítá je.citovat
#011694
avatar
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
#011695
avatar
Opičáku Děkuju jsi chytrá opice. 1citovat
#011701
avatar
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
#011721
avatar
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
#011727
avatar
Díky za ty rady 1citovat

Uživatelské menu

Nejste přihlášen(a)
avatar\n

Menu

Formulář Faktura

Formulář Faktura IV

Oblíbený formulář Faktura byl vylepšen a rozšířen.
Více se dočtete zde.

Helios iNuvio

Používáte podnikový systém Helios iNuvio? Potřebujete pomoci se správou nebo vyvinout SQL proceduru? Více informací naleznete na stránce Helios iNuvio.

On-line nástroje