Dobrý den,
mohli byste mi prosím poradit, jak změnit barvu buňky, ve které došlo ke změně hodnoty?
Jde o rozeznání buňky, do kterých se importovaly nové hodnoty. Proto mi na to jednoduchým způsobem nepasuje standardní podmíněné formátování.
Pokud je nutné makro, tak lze.
Díky moc, PP
EXCEL - změna barvy buňky na základě libovolné změny buňky
Re: EXCEL - změna barvy buňky na základě libovolné změny buňky
Aktuálně se mi daří tímto makrem zjistit, ve které buňce došlo ke změně, ale nevím, které makro zavolat (nebo rovnou napsat) na změnu barvy. Víte někdo?
Private Sub Worksheet_Change(ByVal Target As Range)
Dim KeyCells As Range
' The variable KeyCells contains the cells that will
' cause an alert when they are changed.
Set KeyCells = Range("A1:Z50")
If Not Application.Intersect(KeyCells, Range(Target.Address)) _
Is Nothing Then
Call JAKÉ MAKRO???
End If
End Sub
Private Sub Worksheet_Change(ByVal Target As Range)
Dim KeyCells As Range
' The variable KeyCells contains the cells that will
' cause an alert when they are changed.
Set KeyCells = Range("A1:Z50")
If Not Application.Intersect(KeyCells, Range(Target.Address)) _
Is Nothing Then
Call JAKÉ MAKRO???
End If
End Sub
Re: EXCEL - změna barvy buňky na základě libovolné změny buňky
Tady máš 4 varianty jak změnit barvu buňky přes VBA:
http://office.lasakovi.com/excel/vba-li ... excel-vba/
http://office.lasakovi.com/excel/vba-li ... excel-vba/
Re: EXCEL - změna barvy buňky na základě libovolné změny buňky
Díky moc, to jsem potřeboval.
Funguje to (y)
Teď ještě musím kliknutím změnit barvy zpět, ale to snad zvládnu :)
Funguje to (y)
Teď ještě musím kliknutím změnit barvy zpět, ale to snad zvládnu :)
Re: EXCEL - změna barvy buňky na základě libovolné změny buňky
Range("b3").Interior.Pattern = x1none
Re: EXCEL - změna barvy buňky na základě libovolné změny buňky
Co je špatně? Pokud existuje lepší způsob jak měnit barvy, tak se nechám poučit...
-
- Pohlaví:
Re: EXCEL - změna barvy buňky na základě libovolné změny buňky
Nevidím celek, ale koncept je tak trochu hatlamatla, nerozumím "Teď ještě musím kliknutím změnit barvy zpět, ale to snad zvládnu :)" a nakonec práce s barvami přes Pattern je zjednodušená a ne úplně korektní, lepčí je pracovat pouze s vlastností Color (viz https://proexcel.cz/barvy-ve-vba/). Jako nejlepší se mi jeví ukládání historie změn do vyhrazeného listu (změněná buňka, uživatel). V případě, že sledujeme celý sešit, pak je potřeba zpracovat událost na úrovni aplikace a uvádět i list, na kterém došlo ke změně. Ještě horší varianta je, pokud chceme registrovat historickou hodnotu buňky před změnou (zde se neřeší).
Re: EXCEL - změna barvy buňky na základě libovolné změny buňky
Zdravím...
Kliknutím změnit barvy jsem vyřešil takto (tlačítko s tímto makrem):
Sub puvodni_stav()
'
' puvodni_stav Makro
'
'
Sheets("MIMO").Select
Range("A2:AR2").Interior.Color = RGB(226, 239, 218)
Range("A3:AR3").Interior.Color = RGB(255, 255, 255)
Range("A4:AR4").Interior.Color = RGB(226, 239, 218)
Range("A5:AR5").Interior.Color = RGB(255, 255, 255)
Range("A6:AR6").Interior.Color = RGB(226, 239, 218)
Range("A7:AR7").Interior.Color = RGB(255, 255, 255)
Range("A8:AR8").Interior.Color = RGB(226, 239, 218)
Range("A9:AR9").Interior.Color = RGB(255, 255, 255)
Range("A10:AR10").Interior.Color = RGB(226, 239, 218)
Range("A11:AR11").Interior.Color = RGB(255, 255, 255)
Range("A12:AR12").Interior.Color = RGB(226, 239, 218)
Range("A13:AR13").Interior.Color = RGB(255, 255, 255)
Range("A14:AR14").Interior.Color = RGB(226, 239, 218)
Range("A15:AR15").Interior.Color = RGB(255, 255, 255)
Range("A16:AR16").Interior.Color = RGB(226, 239, 218)
Range("A17:AR17").Interior.Color = RGB(255, 255, 255)
Range("A18:AR18").Interior.Color = RGB(226, 239, 218)
Range("A19:AR19").Interior.Color = RGB(255, 255, 255)
Range("A20:AR20").Interior.Color = RGB(226, 239, 218)
Range("A21:AR21").Interior.Color = RGB(255, 255, 255)
Range("A22:AR22").Interior.Color = RGB(226, 239, 218)
Range("A23:AR23").Interior.Color = RGB(255, 255, 255)
Range("A24:AR24").Interior.Color = RGB(226, 239, 218)
Range("A25:AR25").Interior.Color = RGB(255, 255, 255)
Range("A26:AR26").Interior.Color = RGB(226, 239, 218)
Range("A27:AR27").Interior.Color = RGB(255, 255, 255)
Range("A28:AR28").Interior.Color = RGB(226, 239, 218)
Range("A29:AR29").Interior.Color = RGB(255, 255, 255)
Range("A30:AR30").Interior.Color = RGB(226, 239, 218)
Range("A31:AR31").Interior.Color = RGB(255, 255, 255)
Range("A32:AR32").Interior.Color = RGB(226, 239, 218)
Range("A33:AR33").Interior.Color = RGB(255, 255, 255)
Range("A34:AR34").Interior.Color = RGB(226, 239, 218)
' Původní barvy na swap listě
Sheets("SWAP").Select
Range("A2:AC2").Interior.Color = RGB(226, 239, 218)
Range("A3:AC3").Interior.Color = RGB(255, 255, 255)
Range("A4:AC4").Interior.Color = RGB(226, 239, 218)
Range("A5:AC5").Interior.Color = RGB(255, 255, 255)
Range("A6:AC6").Interior.Color = RGB(226, 239, 218)
Range("A7:AC7").Interior.Color = RGB(255, 255, 255)
Range("A8:AC8").Interior.Color = RGB(226, 239, 218)
Range("A9:AC9").Interior.Color = RGB(255, 255, 255)
Range("A10:AC10").Interior.Color = RGB(226, 239, 218)
Range("A11:AC11").Interior.Color = RGB(255, 255, 255)
Range("A12:AC12").Interior.Color = RGB(226, 239, 218)
Range("A13:AC13").Interior.Color = RGB(255, 255, 255)
Range("A14:AC14").Interior.Color = RGB(226, 239, 218)
Range("A15:AC15").Interior.Color = RGB(255, 255, 255)
' Range("A16:AC16").Interior.Color = RGB(226, 239, 218)
' Range("A17:AC17").Interior.Color = RGB(255, 255, 255)
' Range("A18:AC18").Interior.Color = RGB(226, 239, 218)
' Range("A19:AC19").Interior.Color = RGB(255, 255, 255)
' Range("A20:AC20").Interior.Color = RGB(226, 239, 218)
' Range("A21:AC21").Interior.Color = RGB(255, 255, 255)
' Range("A22:AC22").Interior.Color = RGB(226, 239, 218)
' Range("A23:AC23").Interior.Color = RGB(255, 255, 255)
' Range("A24:AC24").Interior.Color = RGB(226, 239, 218)
' Range("A25:AC25").Interior.Color = RGB(255, 255, 255)
' Range("A26:AC26").Interior.Color = RGB(226, 239, 218)
' Range("A27:AC27").Interior.Color = RGB(255, 255, 255)
' Range("A28:AC28").Interior.Color = RGB(226, 239, 218)
' Range("A29:AC29").Interior.Color = RGB(255, 255, 255)
' Range("A30:AC30").Interior.Color = RGB(226, 239, 218)
' Range("A31:AC31").Interior.Color = RGB(255, 255, 255)
' Range("A32:AC32").Interior.Color = RGB(226, 239, 218)
' Range("A33:AC33").Interior.Color = RGB(255, 255, 255)
' Range("A34:AC34").Interior.Color = RGB(226, 239, 218)
End Sub
-----
Šlo by to zjednodušit, aby se ty dva řádky opakovaly do určité hranice? Takhle vypisovat tisíc řádků je nesmysl :)
Dodatečně přidáno po 2 minutách 22 vteřinách:
Nicméně při uživatelské změně to takto funguje, problém nastává při importu nových dat, protože nová data se importují všechny, včetně starých nezměněných. Tzn., že makro vyhodnotí změnu ve všech buňkách.
Lze tedy nějak jednoduše porovnat původní stav buňky s novou, aby nedocházelo ke zbarvení, pokud je nová hodnota stejná, jako ta stará?
Hodnota Target.Address je totiž ta nová hodnota a nevím jak jednoduše předtím získat původní hodnotu buňky.
Díky moc!
Kliknutím změnit barvy jsem vyřešil takto (tlačítko s tímto makrem):
Sub puvodni_stav()
'
' puvodni_stav Makro
'
'
Sheets("MIMO").Select
Range("A2:AR2").Interior.Color = RGB(226, 239, 218)
Range("A3:AR3").Interior.Color = RGB(255, 255, 255)
Range("A4:AR4").Interior.Color = RGB(226, 239, 218)
Range("A5:AR5").Interior.Color = RGB(255, 255, 255)
Range("A6:AR6").Interior.Color = RGB(226, 239, 218)
Range("A7:AR7").Interior.Color = RGB(255, 255, 255)
Range("A8:AR8").Interior.Color = RGB(226, 239, 218)
Range("A9:AR9").Interior.Color = RGB(255, 255, 255)
Range("A10:AR10").Interior.Color = RGB(226, 239, 218)
Range("A11:AR11").Interior.Color = RGB(255, 255, 255)
Range("A12:AR12").Interior.Color = RGB(226, 239, 218)
Range("A13:AR13").Interior.Color = RGB(255, 255, 255)
Range("A14:AR14").Interior.Color = RGB(226, 239, 218)
Range("A15:AR15").Interior.Color = RGB(255, 255, 255)
Range("A16:AR16").Interior.Color = RGB(226, 239, 218)
Range("A17:AR17").Interior.Color = RGB(255, 255, 255)
Range("A18:AR18").Interior.Color = RGB(226, 239, 218)
Range("A19:AR19").Interior.Color = RGB(255, 255, 255)
Range("A20:AR20").Interior.Color = RGB(226, 239, 218)
Range("A21:AR21").Interior.Color = RGB(255, 255, 255)
Range("A22:AR22").Interior.Color = RGB(226, 239, 218)
Range("A23:AR23").Interior.Color = RGB(255, 255, 255)
Range("A24:AR24").Interior.Color = RGB(226, 239, 218)
Range("A25:AR25").Interior.Color = RGB(255, 255, 255)
Range("A26:AR26").Interior.Color = RGB(226, 239, 218)
Range("A27:AR27").Interior.Color = RGB(255, 255, 255)
Range("A28:AR28").Interior.Color = RGB(226, 239, 218)
Range("A29:AR29").Interior.Color = RGB(255, 255, 255)
Range("A30:AR30").Interior.Color = RGB(226, 239, 218)
Range("A31:AR31").Interior.Color = RGB(255, 255, 255)
Range("A32:AR32").Interior.Color = RGB(226, 239, 218)
Range("A33:AR33").Interior.Color = RGB(255, 255, 255)
Range("A34:AR34").Interior.Color = RGB(226, 239, 218)
' Původní barvy na swap listě
Sheets("SWAP").Select
Range("A2:AC2").Interior.Color = RGB(226, 239, 218)
Range("A3:AC3").Interior.Color = RGB(255, 255, 255)
Range("A4:AC4").Interior.Color = RGB(226, 239, 218)
Range("A5:AC5").Interior.Color = RGB(255, 255, 255)
Range("A6:AC6").Interior.Color = RGB(226, 239, 218)
Range("A7:AC7").Interior.Color = RGB(255, 255, 255)
Range("A8:AC8").Interior.Color = RGB(226, 239, 218)
Range("A9:AC9").Interior.Color = RGB(255, 255, 255)
Range("A10:AC10").Interior.Color = RGB(226, 239, 218)
Range("A11:AC11").Interior.Color = RGB(255, 255, 255)
Range("A12:AC12").Interior.Color = RGB(226, 239, 218)
Range("A13:AC13").Interior.Color = RGB(255, 255, 255)
Range("A14:AC14").Interior.Color = RGB(226, 239, 218)
Range("A15:AC15").Interior.Color = RGB(255, 255, 255)
' Range("A16:AC16").Interior.Color = RGB(226, 239, 218)
' Range("A17:AC17").Interior.Color = RGB(255, 255, 255)
' Range("A18:AC18").Interior.Color = RGB(226, 239, 218)
' Range("A19:AC19").Interior.Color = RGB(255, 255, 255)
' Range("A20:AC20").Interior.Color = RGB(226, 239, 218)
' Range("A21:AC21").Interior.Color = RGB(255, 255, 255)
' Range("A22:AC22").Interior.Color = RGB(226, 239, 218)
' Range("A23:AC23").Interior.Color = RGB(255, 255, 255)
' Range("A24:AC24").Interior.Color = RGB(226, 239, 218)
' Range("A25:AC25").Interior.Color = RGB(255, 255, 255)
' Range("A26:AC26").Interior.Color = RGB(226, 239, 218)
' Range("A27:AC27").Interior.Color = RGB(255, 255, 255)
' Range("A28:AC28").Interior.Color = RGB(226, 239, 218)
' Range("A29:AC29").Interior.Color = RGB(255, 255, 255)
' Range("A30:AC30").Interior.Color = RGB(226, 239, 218)
' Range("A31:AC31").Interior.Color = RGB(255, 255, 255)
' Range("A32:AC32").Interior.Color = RGB(226, 239, 218)
' Range("A33:AC33").Interior.Color = RGB(255, 255, 255)
' Range("A34:AC34").Interior.Color = RGB(226, 239, 218)
End Sub
-----
Šlo by to zjednodušit, aby se ty dva řádky opakovaly do určité hranice? Takhle vypisovat tisíc řádků je nesmysl :)
Dodatečně přidáno po 2 minutách 22 vteřinách:
Nicméně při uživatelské změně to takto funguje, problém nastává při importu nových dat, protože nová data se importují všechny, včetně starých nezměněných. Tzn., že makro vyhodnotí změnu ve všech buňkách.
Lze tedy nějak jednoduše porovnat původní stav buňky s novou, aby nedocházelo ke zbarvení, pokud je nová hodnota stejná, jako ta stará?
Hodnota Target.Address je totiž ta nová hodnota a nevím jak jednoduše předtím získat původní hodnotu buňky.
Díky moc!
Re: EXCEL - změna barvy buňky na základě libovolné změny buňky
Zjednodušíš to tak, že použiješ formát Cells(hodnota1, hodnota2) a dáš to do cyklu.
Zbytek dotazu je opravdu hatlamatla...
Zbytek dotazu je opravdu hatlamatla...
Tomu nerozumím, nějak to zkonkretizuj.ppcko píše:[b]Lze tedy nějak jednoduše porovnat původní stav buňky s novou ...
- elninoslov
- Level 2.5
- Příspěvky: 386
- Registrován: červen 13
- Pohlaví:
- Stav:
Offline
Re: EXCEL - změna barvy buňky na základě libovolné změny buňky
Ano lze. Ale rozumne iba v prípade, že sa dáta menia iba užívateľsky definovaným spôsobom - teda Vašim makrom, a nie po každom prepočítaní listu. Pri každej Vašej zmene si uložte kópiu dát na skrytý list, odtiaľ pri ďalšej zmene kontrolujete predošlú hodnotu, urobíte čo treba, a opäť uložíte nové do skrytého listu.
Tie farby sa majú meniť na základe nejakej nešpecifikovanej podmienky ? Keď sa jedná iba o vymaľovanie každého párneho/nepárneho riadku rovnakou farbou, skúste použiť štýl na ExcelTable.
Priložte prílohu s príkladom, lebo takto to máte podľa mňa celé zle a pomalé.
Tie farby sa majú meniť na základe nejakej nešpecifikovanej podmienky ? Keď sa jedná iba o vymaľovanie každého párneho/nepárneho riadku rovnakou farbou, skúste použiť štýl na ExcelTable.
Priložte prílohu s príkladom, lebo takto to máte podľa mňa celé zle a pomalé.
Re: EXCEL - změna barvy buňky na základě libovolné změny buňky
Vkládám ukázku, jak to aktuálně funguje na testovací tabulce, aby to tedy nebylo tak zmatené :)
Jde o to, že data se importují všechna znovu včetně nových, tudíž se zabarví všechna pole. Takže je potřeba, aby se zabarvilo pole jen v případě, kdy je nová hodnota rozdílná od původní.
Je to takto srozumitelnější?
Děkuju a přeji hezký den, PP
Jde o to, že data se importují všechna znovu včetně nových, tudíž se zabarví všechna pole. Takže je potřeba, aby se zabarvilo pole jen v případě, kdy je nová hodnota rozdílná od původní.
Je to takto srozumitelnější?
Děkuju a přeji hezký den, PP
-
- Mohlo by vás zajímat
- Odpovědi
- Zobrazení
- Poslední příspěvek
-
-
Počítač do 30k- změny Příloha(y)
od Dejvik2323 » 18 bře 2025 15:32 » v Rady s výběrem hw a sestavením PC - 11
- 5654
-
od DragonX
Zobrazit poslední příspěvek
24 bře 2025 12:50
-
-
-
EXCEL -jak otevřít 2 excel sobory abych je viděla současne a samostatně
od Ketty02 » 30 srp 2024 21:19 » v Vše ostatní (sw) - 2
- 4739
-
od Riviera kid
Zobrazit poslední příspěvek
02 zář 2024 16:21
-
-
- 2
- 12159
-
od Snekment
Zobrazit poslední příspěvek
29 led 2025 15:05
-
- 1
- 4389
-
od Grander
Zobrazit poslední příspěvek
21 čer 2024 17:41
-
- 17
- 7228
-
od Fargotroniac
Zobrazit poslední příspěvek
12 říj 2024 18:59
Kdo je online
Uživatelé prohlížející si toto fórum: Žádní registrovaní uživatelé a 4 hosti