excel - označení řádků

Programy pro práci v kanceláři (Word, Excel, Access…=>Office)

Moderátor: Mods_senior

Odpovědět
Rexlopek
nováček
Příspěvky: 6
Registrován: 07 lis 2017 14:41

excel - označení řádků

Příspěvek od Rexlopek »

Ahoj,
zkoušel jsem vytvořit makro, které by mi označilo všechny řádky, podle jednoduché podmínky, ale vždy mi to označí jen první vhodný řádek a zbytek nechá být, neporadil by mi někdo, v čem dělám chybu?



řádky.xlsm
(33.73 KiB) Staženo 70 x


zmíněné makro:

Sub Makro1()
'
' Makro1 Makro
'
Set Rng = Range("D1:D57")
i = 1
For counter = 1 To Rng.Rows.Count
If Rng.Cells(i) = "ANO" Then
Rng.Cells(i).EntireRow.Interior.Color = RGB(188, 188, 188)
Else
i = i + 1
End If
Next
'
End Sub
Uživatelský avatar
Grimm
Level 2
Level 2
Příspěvky: 165
Registrován: 30 zář 2017 20:50

Re: excel - označení řádků

Příspěvek od Grimm »

V čem děláš chybu?. V nesmyslném použití dvou čítačů. Tedy proměnných counter a i, to i je tam naprosto zbytečné a způsobuje nefunkčnost kódu a špatně zvolené vyhodnocení podmínky "if". V editoru si zobraz okno "Locals" ať vidíš jakých hodnot obě proměnné nabývají.
Pro názornost si můžeš do cyklu vložit Rng.Cells(i).Select abys viděl v listu, která buňka je aktuálně vybraná a kód krokuj pomocí klávesy F8.
Určitě přijdeš na to kde si udělal kopanec.

PS: Ten select potom samozřejmě smaž.
Rexlopek
nováček
Příspěvky: 6
Registrován: 07 lis 2017 14:41

Re: excel - označení řádků

Příspěvek od Rexlopek »

začalo mi to fungovat s přidáním dalšího počítadla, je to správně?

Sub Makro1()
'
' Makro1 Makro
'
Set Rng = Range("D1:D57")
i = 1
For counter = 1 To Rng.Rows.Count
Rng.Cells(i).Select
If Rng.Cells(i) = "ANO" Then
Rng.Cells(i).EntireRow.Interior.Color = RGB(188, 188, 188)
i = i + 1
Else
i = i + 1
End If
Next
'
End Sub
Uživatelský avatar
Grimm
Level 2
Level 2
Příspěvky: 165
Registrován: 30 zář 2017 20:50

Re: excel - označení řádků

Příspěvek od Grimm »

Jak už sem psal předtím, proměnná i je zcela zbytečná. Vždyť si vystačíš s prvním počítadlem counter. Nebo pokud trváš na tom i tak si counter přejmenuj na i.

Kód: Vybrat vše

Sub Makro1()
'
' Makro1 Makro
'
Dim RnG As Range
Dim counter As Long

Set RnG = Range("D1:D57")
For counter = 1 To RnG.Rows.Count
    If RnG.Cells(counter) = "ANO" Then
        RnG.Cells(counter).EntireRow.Interior.Color = RGB(188, 188, 188)
    End If
Next
'
Set RnG = Nothing
End Sub
PS: Samozřejmě by se kód dal napsat několika způsoby, ale na začátek dobrý :-)
d1amond
člen HW spec týmu
Příspěvky: 16119
Registrován: 26 kvě 2008 10:14
Bydliště: České Budějovice

Re: excel - označení řádků

Příspěvek od d1amond »

Hlavně to není kód napsaný uživatelem, ale záznam makra. Myslím si, že tazatel moc neví, na co se kouká. Resp. makro, doplněné uživatelsky.
Nikdy neříkej, že to nejde, protože se najde někdo, kdo o tom neví a udělá to!
Chcete si nechat sestavit nový počítač?
Odpovědět
  • Podobná témata
    Odpovědi
    Zobrazení
    Poslední příspěvek
  • Přechod z Excel 21 na Excel 24
    od Snekment » » v Kancelářské balíky
    2 Odpovědi
    14409 Zobrazení
    Poslední příspěvek od Snekment
  • Pohoda a excel
    od brownwld » » v Kancelářské balíky
    1 Odpovědi
    7336 Zobrazení
    Poslední příspěvek od atari
  • Tisk sloupců vedle sebe na A4 - Excel
    od atari » » v Kancelářské balíky
    5 Odpovědi
    5915 Zobrazení
    Poslední příspěvek od atari
  • Excel 2016 - vzorec kombinace podmínek
    od MK_Vs » » v Kancelářské balíky
    5 Odpovědi
    6136 Zobrazení
    Poslední příspěvek od lubo.

Zpět na „Kancelářské balíky“