Stránka 1 z 1

Excel: změna barvy buňky jedním klikem

Napsal: 06 zář 2014 09:02
od Darth Vader
Čau,

dělám si pro usnadnění práce tabulku, do který zaznamenávám dva stavy - ano nebo ne - a potřebuju poradit.

Vyjádření řeším změnou barvy buňky (zelená nebo červená), jenže to dělám přes panel nástrojů (což s sebou obnáší označení buňky, najetí na panel nástrojů, rozkliknutí barvy pozadí a vybrání barvy. To je dost zdlouhavý.

Proto bych chtěl vytvořit tabulku, ve které by buňka měla dva stavy (zelená a červená), mezi kterými by se přepínalo jedním klikem myši: zkrátka na začátku jsou všechny buňky červené. Kliknu na jednu buňku a ta zezelená. Kliknu na ní znovu a ona zpátky zčervená. A tak pořád dokola.

Víte někdo, jak to udělat? Nevím, jak problém pojmenovat, takže jsem zatím nic kloudnýho nenašel.

Nejradši budu, když to bude v Excelu. Když ale nepůjde jinak, udělám to v HTML.

Díky

--- Doplnění předchozího příspěvku (06 Zář 2014 12:18) ---

Nikdo nic?

Re: Excel: změna barvy buňky jedním klikem

Napsal: 06 zář 2014 15:07
od Azuzula
Ahoj, musí to být jedním kliknutím?
Pokud ne, použila bych ověření dat a podmíněné formátování.
Pokud ano, budeš potřebovat makro.

Re: Excel: změna barvy buňky jedním klikem

Napsal: 06 zář 2014 15:33
od Darth Vader
Díky moc. Takže to jde?

S tím ověřením dat by to mělo fungovat na jakym principu?

Re: Excel: změna barvy buňky jedním klikem

Napsal: 06 zář 2014 16:30
od Azuzula
Nastavíš si seznam v ověření dat, potom budeš vybírat v buňce možnost 1 nebo 0 a podle toho se podmíněným formátováním může měnit barva buňky.

V příloze je příklad i s tabulkou, když pak přidáš další řádek, tak se automaticky kopíruje formát dál.

Re: Excel: změna barvy buňky jedním klikem

Napsal: 08 zář 2014 12:54
od guest
Do budoucna vám dám radu - vykašlete se na rozlišení stavu jen podle barvy a říkám to lidem od rána do večera (filtry Excelu 2003 a starší, barvoslepost, černobílá kopírka, ... vysčítávání čistě dle barvy je snad nejblbější a nejčastější úloha vůbec). Ale když už...

Podmíněný formát s testem na jiných buňkách (ta a ta buňka vlevo vyplněna) - OK, i když platí to, co v předchozím odstavci.
Podmíněný formát spolu s ověřením - technicky OK, pracnost o něco menší než běžně, teoreticky by šlo podpořit makrem na otvírání roletky ověření.
Makro samo o sobě také není 100% řešení - lze realizovat jen na událost SelectionChange a změna by spočívala v překliknutí jinam (tj. opětovné klepnutí na buňku ji nezmění).

Re: Excel: změna barvy buňky jedním klikem

Napsal: 09 zář 2014 11:30
od cmuch
Dvě možnosti jak se tomu přiblížit.
1)
Umístit do modulu listu

Kód: Vybrat vše

Private Sub Worksheet_SelectionChange(ByVal Target As Range)

  If ActiveCell.Address = "$A$1" Then
 
     If Target.Interior.ColorIndex = xlNone Then
        Target.Interior.ColorIndex = 6
     ElseIf Target.Interior.ColorIndex = 6 Then
        Target.Interior.ColorIndex = 3
     ElseIf Target.Interior.ColorIndex = 3 Then
        Target.Interior.ColorIndex = 6
     End If
     Range(ActiveCell.Address).Offset(0, 1).Select
  End If
End Sub


2)
Umístit do modulu listu

Kód: Vybrat vše

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
  Cancel = True
  Worksheet_SelectionChange Target
End Sub

Private Sub Worksheet_SelectionChange(ByVal Target As Range)

     If Target.Interior.ColorIndex = xlNone Then
        Target.Interior.ColorIndex = 6
     ElseIf Target.Interior.ColorIndex = 6 Then
        Target.Interior.ColorIndex = 3
     ElseIf Target.Interior.ColorIndex = 3 Then
        Target.Interior.ColorIndex = 6
     End If
End Sub

Re: Excel: změna barvy buňky jedním klikem

Napsal: 09 zář 2014 18:44
od guest
cmuch: Jukněte se na konstrukce Select..Case a With...End With

Jinak ten úskok offsetem - no je to takový nepěkná věc no, ale jak jsem psal, ono to vyřešit inteligentně nejde.

Re: Excel: změna barvy buňky jedním klikem

Napsal: 10 zář 2014 18:38
od cmuch
To vím jak se používá, ale mě to přišlo pro toto lepší :-)

Náprava k dvojce :shifty:

Kód: Vybrat vše

  With Target.Interior
    Select Case .ColorIndex
      Case xlNone:  .ColorIndex = 6
      Case 6:       .ColorIndex = 3
      Case 3:       .ColorIndex = 6
    End Select
  End With