Exel - podmíněné formátování (vyřešeno) Vyřešeno

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

Moderátor: Mods_senior

abc
Pohlaví: Nespecifikováno

Příspěvekod abc » 19 bře 2005 23:44

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ů.

Reklama
miras
Tvůrce článků
Level 5
Level 5
Příspěvky: 2159
Registrován: červenec 04
Pohlaví: Nespecifikováno
Stav:
Offline

Příspěvekod miras » 20 bře 2005 10:25

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 :wink:
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 :wink:

abc
Pohlaví: Nespecifikováno

Příspěvekod abc » 20 bře 2005 19:43

Do tý buňky "zaplaceno" budu psát pouze datum kdy dojde k platbě, jinak bude vždy prázdná u všech zakázek.
To spuštění automaticky jesli událost Před uložením nebo Při změně bych nechal na tobě, budu mít stějně jen kolem 200 záznamů...
S tim školenim.., no nevim, nevim, zda to pochopim :wink: :D

miras
Tvůrce článků
Level 5
Level 5
Příspěvky: 2159
Registrován: červenec 04
Pohlaví: Nespecifikováno
Stav:
Offline

Příspěvekod miras » 20 bře 2005 21:50

Měl bych tu pro tebe další verzi :wink:
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 :wink:. Vlevo poklepej na ThisWorkbook a tam vlož tenhle kód. Výsledek by měl vypadat zhruba takhle:
Obrázek

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 :D. 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 :wink:

miras
Tvůrce článků
Level 5
Level 5
Příspěvky: 2159
Registrován: červenec 04
Pohlaví: Nespecifikováno
Stav:
Offline

  Vyřešeno

Příspěvekod miras » 03 dub 2005 17:34

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
  • Podmíněné formátování poměru Příloha(y)
    od veselypettr » 25 kvě 2023 14:01 » v Kancelářské balíky
    7
    1744
    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
    1448
    od mmmartin Zobrazit poslední příspěvek
    19 kvě 2023 10:07
  • Formátování SSD před prodejem
    od Honzis » 05 čer 2023 23:16 » v Vše ostatní (hw)
    11
    1170
    od Cemada Zobrazit poslední příspěvek
    06 čer 2023 13:07

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

Kdo je online

Uživatelé prohlížející si toto fórum: Žádní registrovaní uživatelé a 6 hostů