< návrat zpět

MS Excel


Téma: Automatické prefarbovanie tvarov rss

Zaslal/a 2.10.2023 16:44

Ahojte,
prosím, vedeli by ste mi niekto poradiť, ak sa to samozrejme dá, že akým spôsobom viem nastaviť prefarbovanie tvarov, ktoré sú vykreslené do tvaru okresu?

Konkrétne, ku každému okresu prislúcha nejaké percento k nemu nastavené podmienené formátovanie.
A ja by som túto farbu, ktorá patrí danému percentu, chcel nejako automatizovane preniesť do mapy vytvorenej z tvarov?

Dá sa to nejak?

Ďakujem za radu

Zaslat odpověď >

Strana:  1 2   další »
#055486
elninoslov
Mrk semcitovat
#055487
avatar
To som pozeral, ďakujem.
Len ma napadlo, či to musí byť riešené iba makrom, alebo sa aj automatickým spôsobom dá, pretože do zdrojových dát budem mať ešte napasované vzorce a pivotky.

A keď zmením pivotku napríklad, aby som mohol eliminovať to, že sa zabudne kliknúť na makro button.

Ak sa to nedá, tak si to spravím podľa toho, len či náhodou nie je aj takáto možnosť.citovat
#055488
elninoslov
Nie, podmienený formát pre objekty nefunguje. S tým prepočtom bude rýchlostný problém. Ak nie na tlačítko, dá sa to naviazať na udalosť Calculate, ktorá bude vyvolaná ale pri každej zmene bunky, pri každom filtri v KT. To bude pomalé.

EDIT:
Keby išlo len o pivotku tak udalosť PivotTableUpdate. To ale samozrejme nereaguje na zmenu dát v bunkách, či už manuálnu alebo vzorcom.citovat
#055489
avatar
Hmm, neviem či pozerám správne do toho makro kódu, ale pod čím sa tam skrýva to naviazanie na button?

Ja budem mať totiž vo vedľajšom sheete pivotku, ktorú budem filtrovať cez týchle filtre, takže pivotka sa bude prepočítavať.
A z nej, vlookup prevezme potom percentá k jednotlivým okresom, kde teda dojde k podfarbeniu.

Sub Vyfarbi()
Dim R As Long, Okr(), FarbaNew As Double
With wsData
R = .Cells(Rows.Count, 1).End(xlUp).Row - 1
If R < 1 Then MsgBox "Chýbajú okresy!", vbCritical: Exit Sub
Okr = .Cells(2, 1).Resize(R, 2).Value2

Application.ScreenUpdating = False
For R = 1 To UBound(Okr, 1)
FarbaNew = .Cells(R + 1, 2).Interior.Color
With wsMapa.Shapes("Okres_" & Okr(R, 1) & "_" & Okr(R, 2)).OLEFormat.Object.Interior
If .Color <> FarbaNew Then .Color = FarbaNew
End With
Next R
Application.ScreenUpdating = True

End With
End Sub
citovat
#055490
elninoslov
Súbor "Okresy SK mapa.xlsm" je na tlačítko na liste Data. Akú farbu manuálne dáte v Data, takú bude mať okres. Teda to nie je automaticky počítaná farba ako v PF. Toto sa dá naviazať predsa hocikam.

Naopak súbor "Okresy SK mapa PF.xlsm" používa ofajč pomocou vlastnej funkcie COND_COL_SHAPE (v stĺpci Funkcia na liste Data), ktorá volá EVALUATE aby získala práve zobrazenú farbu danej bunky, ktorú vypočítal PF. Toto sa prefarbí pri každom prepočte listu.

Musel by som vidieť ten Váš súbor, ako vyzerá zdroj, vzorce, čo je vstupom a čo má byť presne výstupom KT. A možno prídem na to ako to prerobiť a prispôsobiť. Makro je takmer vždy vysoko špecifické. A tu napr. nie je možné pridať taký funkčný stĺpec do KT, ktorý by obsahoval vlastnú VBA funkciu s odkazom na vedľajšiu bunku.citovat
#055491
avatar
Tak dokreoval som to takto nejako.
Tlačítko na vyfarbovanie funguje, avšak neviem ako donútiť tie bunky kde sú vypísané okresy, aby sa vyfarbili podľa toho vedľajšieho stĺpca s percentami.

EDIT: nechce mi pridať súbor, asi kvôli veľkosti.
Dá sa poslať aj nejako inak?citovat
#055492
elninoslov
Ak je to súbor XLSM, musí sa zaZIPovať. Veľkosť by malo zobrať asi do 300 KB.citovat
#055494
avatar
Pokud berete barvu podle podmíněného formátu, pak je vhodnější použít vlastnost Range.DisplayFormat:

FarbaNew = .Cells(R + 1, 2).DisplayFormat.Interior.Color

Tedy pokud je v buňce opravdu podmíněný formát, a ne přebarvení makrem.citovat
#055495
elninoslov
V UDF nie je možné priamo čítať DisplayFormat, ale obabraním cez EVALUATE áno. Preto som to tak robil v tom druhom súbore s PF to tak mám
... = Bunka.DisplayFormat.Interior.Color
V obyčajnom makre to ide, ale nie v UDF.citovat
#055496
avatar

elninoslov napsal/a:

Ak je to súbor XLSM, musí sa zaZIPovať. Veľkosť by malo zobrať asi do 300 KB.


áno, je to xlsm.
Doma mi to balilo do rar, ktore malo cez 5MB
Teraz na pracovnom ntb mi to balí do zip a má to 22B, čo neviem či to robí dobre, ale vyskúšame
Příloha: zip55496_mapa-svk_okresy_23.zip (1kB, staženo 11x)
citovat

Strana:  1 2   další »

Uživatelské menu

Nejste přihlášen(a)
avatar\n

Menu

Formulář Faktura

Formulář Faktura IV

Oblíbený formulář Faktura byl vylepšen a rozšířen.
Více se dočtete zde.

Helios iNuvio

Používáte podnikový systém Helios iNuvio? Potřebujete pomoci se správou nebo vyvinout SQL proceduru? Více informací naleznete na stránce Helios iNuvio.

On-line nástroje