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?
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
excel - označení řádků
Re: excel - označení řádků
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ž.
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ž.
Re: excel - označení řádků
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
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
Re: excel - označení řádků
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.
PS: Samozřejmě by se kód dal napsat několika způsoby, ale na začátek dobrý
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ý
-
- člen HW spec týmu
-
Elite Level 12
- Příspěvky: 16106
- Registrován: květen 08
- Bydliště: České Budějovice
- Pohlaví:
- Stav:
Offline
Re: excel - označení řádků
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č?
Chcete si nechat sestavit nový počítač?
-
- Mohlo by vás zajímat
- Odpovědi
- Zobrazení
- Poslední příspěvek
-
-
excel text na konec více řádků najednou Příloha(y)
od Myerina » 03 led 2024 11:51 » v Kancelářské balíky - 5
- 780
-
od Zivan
Zobrazit poslední příspěvek
04 led 2024 09:42
-
-
- 3
- 1787
-
od Melvidor
Zobrazit poslední příspěvek
21 črc 2023 08:41
-
-
Ukotvení prvního a posledního řádku v tabulce.
od Kopusek » 13 pro 2023 10:50 » v Kancelářské balíky - 2
- 1413
-
od Kopusek
Zobrazit poslední příspěvek
14 pro 2023 08:55
-
-
- 16
- 5985
-
od mirekol
Zobrazit poslední příspěvek
20 říj 2023 08:31
-
- 3
- 1837
-
od Story-Long
Zobrazit poslední příspěvek
14 srp 2023 10:11
Kdo je online
Uživatelé prohlížející si toto fórum: Žádní registrovaní uživatelé a 6 hostů