předpokládám, že tahle tabulka bude mít během roku max. 200 záznamů, to by bylo dobrý kdyby se obarvovalo automaticky, abych nemusel pořád to makro spouštět ručně... Volný řádky nebudou.
To obarvení na "šedo" by bylo dobrý podle "ano/ne", ale mám v tabulce sloupec "zaplaceno" (sloupec H), kde budu psát konkrétní datum zaplacení, tak jestli by to např. nešlo podle toho.
To makro by mělo "běžet" (jestli to jde) až od třetího řádku, protože v 1. a 2. řádku mám název tabulky a názvy sloupců.
Exel - podmíněné formátování (vyřešeno) Vyřešeno
Jako vždy existuje nespočet možností jak to provést. Něco málo nadhodím a až se domluvíme jak by to mělo pracovat, pokusím se vymyslet aby to tak pracovalo
K tomu barvení na šedo. Když bude zakázka nezaplacená, bude v tý buňce něco, nebo bude prázdná. Jestli je prázdná se dá kontrolovat, kdyby tam mělo bejt něco napsaný, bylo by potřeba aby to bylo u všech nezaplacenejch zakázek stejný.
K tomu aby se spouštělo automaticky. Každej sešit má tzv. události. Když třeba ukládáš, jedná se o událost, který může bejt přiřazený "makro". Událostí je dost, pro naše účely by byly dobře využitelný asi události Před uložením a Při změně.
V prvním případě by si provedl všechny potřebný změny, zmáčknul Ctrl+S pro uložení, címž by si spustil makro přiřazený daný události a to by ti obarvilo záznamy.
V druhým případě by se makro spuštělo při každý změně provedený v sešitě. Změníš obsah jakýkoliv buňky, spustí se makro. To projde od vrchu až dolů všechny záznamy, vyhodnotí jestli vyhovujou daný podmínce a případně je obarví. A to chvilku trvá. Když je záznamů málo, dejme tomu těch 200, ani nepoznáš že se něco stalo, jen ti problikne kurzor. Logicky když záznamů přibejvá, činnost makra se prodlužuje.
Vnitřní struktura procedur je stejná, takže bych ti pak dal stručnou školu programování v Excelu a sám by sis mohl zkoušet co se stane když daný makro přiřadíš k jiný události
K tomu barvení na šedo. Když bude zakázka nezaplacená, bude v tý buňce něco, nebo bude prázdná. Jestli je prázdná se dá kontrolovat, kdyby tam mělo bejt něco napsaný, bylo by potřeba aby to bylo u všech nezaplacenejch zakázek stejný.
K tomu aby se spouštělo automaticky. Každej sešit má tzv. události. Když třeba ukládáš, jedná se o událost, který může bejt přiřazený "makro". Událostí je dost, pro naše účely by byly dobře využitelný asi události Před uložením a Při změně.
V prvním případě by si provedl všechny potřebný změny, zmáčknul Ctrl+S pro uložení, címž by si spustil makro přiřazený daný události a to by ti obarvilo záznamy.
V druhým případě by se makro spuštělo při každý změně provedený v sešitě. Změníš obsah jakýkoliv buňky, spustí se makro. To projde od vrchu až dolů všechny záznamy, vyhodnotí jestli vyhovujou daný podmínce a případně je obarví. A to chvilku trvá. Když je záznamů málo, dejme tomu těch 200, ani nepoznáš že se něco stalo, jen ti problikne kurzor. Logicky když záznamů přibejvá, činnost makra se prodlužuje.
Vnitřní struktura procedur je stejná, takže bych ti pak dal stručnou školu programování v Excelu a sám by sis mohl zkoušet co se stane když daný makro přiřadíš k jiný události
-
- Pohlaví:
Měl bych tu pro tebe další verzi
Začnu zdrojákem:
Otevři si Excel, nejlíp úplně novej neposkvrněnej sešit, dej Alt+F11, tím se dostaneš do editoru jazyka VBA. Tedy ta šílenost ve který sem tohle napsal . Vlevo poklepej na ThisWorkbook a tam vlož tenhle kód. Výsledek by měl vypadat zhruba takhle:
Jak už sem napsal do kódu jako komentáře: Začíná se teda barvit na souřadnicích 3B, s tím že položka zaplaceno by byla ve sloupci C. Jestli to tak není stačí přepsat jedno písmenko.
Ještě sem vložím ten link kde je tabulka s barevnejma konstantama: http://www.mvps.org/dmcritchie/excel/colors.htm
Vyzkoušej a napiš svoje dojmy . Teď to teda formátuje při každý změně, kdyby se ti to zdálo zabržděný vysvětlil bych ti jak to přiřadit k jiný události
Začnu zdrojákem:
Kód: Vybrat vše
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
Dim Mesto As String
Dim radek, x, y As Integer
x = ActiveCell.Row
y = ActiveCell.Column
Cells(3, "B").Select 'Urcuje radek a sloupec kde zacinaji vlastni data, ted teda treti radek a sloupec B
For radek = 3 To ActiveCell.CurrentRegion.Count 'Tady zacina vlastni barveni, zase polozka radek urcuje na kterym radku zacne :)
If Cells(radek, "C").Value <> "" Then 'Tou polozkou v uvozovkach (aktualne "C") nastavujes sloupec s informaci o zaplaceni
Rows(radek).Select
Selection.Interior.ColorIndex = 15
Else:
Mesto = Cells(radek, "B") 'Tady ta polozka v uvozovkach urcuje sloupec s nazvem mesta
Select Case Mesto
Case "Praha" 'Podminek muze bejt kolik potrebujes, staci pridat dalsi vetev Case a zmenit barvu pro dany mesto
Rows(radek).Select 'Ze muze bej podmonek neomezene vlastne neni tak uplne pravda,pac Excel zna jen 56 barevnejch konstant
Selection.Interior.ColorIndex = 4 ' Co ktery cislo znaci za barvu najdes tady: http://www.mvps.org/dmcritchie/excel/colors.htm
Case "Brno"
Rows(radek).Select
Selection.Interior.ColorIndex = 17
Case "Ostrava"
Rows(radek).Select
Selection.Interior.ColorIndex = 27
Case "Plzeň"
Rows(radek).Select
Selection.Interior.ColorIndex = 33
End Select
End If
Next radek
Cells(x, y).Activate
End Sub
Otevři si Excel, nejlíp úplně novej neposkvrněnej sešit, dej Alt+F11, tím se dostaneš do editoru jazyka VBA. Tedy ta šílenost ve který sem tohle napsal . Vlevo poklepej na ThisWorkbook a tam vlož tenhle kód. Výsledek by měl vypadat zhruba takhle:
Jak už sem napsal do kódu jako komentáře: Začíná se teda barvit na souřadnicích 3B, s tím že položka zaplaceno by byla ve sloupci C. Jestli to tak není stačí přepsat jedno písmenko.
Ještě sem vložím ten link kde je tabulka s barevnejma konstantama: http://www.mvps.org/dmcritchie/excel/colors.htm
Vyzkoušej a napiš svoje dojmy . Teď to teda formátuje při každý změně, kdyby se ti to zdálo zabržděný vysvětlil bych ti jak to přiřadit k jiný události
Vyřešeno
Tak tady je to ještě jednou, poupravený tak, aby to nebarvilo celej řádek, ale jen po sloupec I:
Kód: Vybrat vše
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
Const sloupec As String = "I" 'Tady si nastavis do kteryho sloupce se ma barvit
Dim Mesto As String
Dim radek, x, y As Integer
Dim zacatek, konec As String
x = ActiveCell.Row
y = ActiveCell.Column
konec = "I"
Cells(3, "B").Select 'Urcuje radek a sloupec kde zacinaji vlastni data, ted teda treti radek a sloupec B
For radek = 3 To ActiveCell.CurrentRegion.Count 'Tady zacina vlastni barveni, zase polozka radek urcuje na kterym radku zacne :)
If Cells(radek, "C").Value <> "" Then 'Tou polozkou v uvozovkach (aktualne "C") nastavujes sloupec s informaci o zaplaceni
Range(Cells(radek, "A"), Cells(radek, sloupec)).Select
Selection.Interior.ColorIndex = 15
Else:
Mesto = Cells(radek, "B") 'Tady ta polozka v uvozovkach urcuje sloupec s nazvem mesta
Select Case Mesto
Case "Praha" 'Podminek muze bejt kolik potrebujes, staci pridat dalsi vetev Case a zmenit barvu pro dany mesto
Range(Cells(radek, "A"), Cells(radek, sloupec)).Select 'Ze muze bej podmonek neomezene vlastne neni tak uplne pravda,pac Excel zna jen 56 barevnejch konstant
Selection.Interior.ColorIndex = 4 ' Co ktery cislo znaci za barvu najdes tady: http://www.mvps.org/dmcritchie/excel/colors.htm
Case "Brno"
Range(Cells(radek, "A"), Cells(radek, sloupec)).Select
Selection.Interior.ColorIndex = 17
Case "Ostrava"
Range(Cells(radek, "A"), Cells(radek, sloupec)).Select
Selection.Interior.ColorIndex = 27
Case "Plzeň"
Range(Cells(radek, "A"), Cells(radek, sloupec)).Select
Selection.Interior.ColorIndex = 33
End Select
End If
Next radek
Cells(x, y).Activate
End Sub
-
- Mohlo by vás zajímat
- Odpovědi
- Zobrazení
- Poslední příspěvek
-
- 7
- 1926
-
od veselypettr
Zobrazit poslední příspěvek
31 kvě 2023 14:00
-
-
Formatování SD karty
od P. Sedlacek » 18 kvě 2023 14:27 » v Mobily, tablety a jiná přenosná zařízení - 7
- 1538
-
od mmmartin
Zobrazit poslední příspěvek
19 kvě 2023 10:07
-
-
- 11
- 1196
-
od Cemada
Zobrazit poslední příspěvek
06 čer 2023 13:07
Kdo je online
Uživatelé prohlížející si toto fórum: Žádní registrovaní uživatelé a 39 hostů