Terve!
Nyt olisi paha pähkinä miten saa solun taustaväriä muokattua täydellisemmin mitä ehdollinen muotoilu antaa tehdä. Ehdollisen muotoilun kanssa saa muistaakseni kolme eri tilaa määrätä mitkä vaikuttavat solun näyttöön.
Nyt olisi tarkoitus määrätä solulle taustaväri liukuvärillä mikä määräytyy solun arvon mukaan.
Solun arvo on aina välillä 0..1
Tämä varmaan onnistuu makrojen avulla mutta allekirjoittanut on suuri käsi näissä niin tarttisin apua.
Liukuvärin joka on punainen min arvon kohdalla, keltainen sen keskellä(min-max) ja punainen sen max arvon kohdalla sain omasta mielestäni tehtyä oikein. Laskin punaiselle R, vihreälle G ja siniselle B arvot solun arvon mukaan.
RGB:n kaavojen syntaksi saattaa olla pilalla mutta ne voi säätää toivottavasti.
Eli en päässyt juuri alkua pitemmälle ja tässä on virityksen alkua:
REM ***** BASIC *****
Sub SolunTaustaVari
cell=getcell...
max=40% // tai 0,4
min=10% // tai 0,1
R=ROUNDUP(IF(cell>(max min)/2;255;IF(cell
Nyt olisi paha pähkinä miten saa solun taustaväriä muokattua täydellisemmin mitä ehdollinen muotoilu antaa tehdä. Ehdollisen muotoilun kanssa saa muistaakseni kolme eri tilaa määrätä mitkä vaikuttavat solun näyttöön.
Nyt olisi tarkoitus määrätä solulle taustaväri liukuvärillä mikä määräytyy solun arvon mukaan.
Solun arvo on aina välillä 0..1
Tämä varmaan onnistuu makrojen avulla mutta allekirjoittanut on suuri käsi näissä niin tarttisin apua.
Liukuvärin joka on punainen min arvon kohdalla, keltainen sen keskellä(min-max) ja punainen sen max arvon kohdalla sain omasta mielestäni tehtyä oikein. Laskin punaiselle R, vihreälle G ja siniselle B arvot solun arvon mukaan.
RGB:n kaavojen syntaksi saattaa olla pilalla mutta ne voi säätää toivottavasti.
Eli en päässyt juuri alkua pitemmälle ja tässä on virityksen alkua:
REM ***** BASIC *****
Sub SolunTaustaVari
cell=getcell...
max=40% // tai 0,4
min=10% // tai 0,1
R=ROUNDUP(IF(cell>(max min)/2;255;IF(cell
Vastaukset 8
Vanhimmat
osheet=thiscomponent.sheets(0)
ocell=osheet.getcellbyposition(sarake,rivi)
arvo = ocell.value
.
.
.
oCell.CellBackColor = RGB(R,G,B)
Kiva kun jaksoit helppiä ...
Viittiikö joku neuvoa vielä tuon syntaxin kanssa, tai laittaa linkkiä missä tuosta syntaxista on juttua tai kertoo ohjetiedostossa olevan kohdan?
tässä esim. tuo sinisen arvon laskeminen:
B=ROUNDUP(IF(arvo>(max min)/2;85;IF(arvo
if arvo>(max min)/2 then B=85 else
if arvo
2 ongelmaa olisi.
1. Virheilmoitus:
BASIC-Suoritusvirhe.
Aliproseduuria tai funktiota ei ole määritetty.
Herjaa näitstä lausekkeista:
R=ceiling(255-150*(1-(arvo-min)*(1/((max-min)/2))))
G=ceiling(255-(1-(1/((max-min)/2))*(arvo-min))*168)
B=ceiling(105-(arvo-min)*(1/((max-min)/2))*20)
Eli ceiling funktiota ei ymmärrä. Se varmaan pitää hakea erikseen joistain kirjastosta?
2. Toimii ainoastaan soluun A1 eikä maalattuihin soluihin mikä oli haluttu toimenpide.
Miten tämän saisi toimimaan maalattuihin soluihin eikä taulukon ensimmäiseen soluun? Onko liian paha?
On muuten vielä muutakin ongelmaa taulukossa joten ei hätä. :)
Kitos taas ...
Sub Soluntausta
SelectedCells = ThisComponent.CurrentSelection
If SelectedCells.supportsService("com.sun.star.sheet.SheetCellRange") then
aCellAddress = SelectedCells.getrangeAddress
osheet = thiscomponent.sheets(aCellAddress.Sheet)
max=0.4
min=0.1
for sarake = aCellAddress.StartColumn to aCellAddress.EndColumn
for rivi = aCellAddress.StartRow to aCellAddress.EndRow
ocell = osheet.getcellbyposition(sarake , rivi)
arvo = ocell.value
if arvo>(max min)/2 then
R = 255
B = 85
G = 255
else
if arvo
Homma läks toimii niinku piti (värit oli menny mönkään mut pitäisi toimia taas).
Tuossa on nähtävästi rajoitteena toi alueen suorakaiteisuus mut no hätä.
Alhaalla on parit toimivat liukuvärit jos joku haluaa käyttää.
Ihan hyvät pastellivärit (jos nyt ymmärrän mitä ne on)
normalisointi = (arvo-min)*(1/((max-min)/2))
if arvomax then R=121 else
R=roundup(255-(normalisointi-1)*134)
if arvo(max min)/2 then G=255 else
G=roundup(255-(1-normalisointi)*168)
if arvo(max min)/2 then B=121 else
B=roundup(105-(1-normalisointi)*34)
Toiset ei niin minun makuuni olevat täyskirkkaat
normalisointi = (arvo-min)*(1/((max-min)/2))
if arvomax then R=0 else
R=roundup(255-(normalisointi-1)*255)
if arvo(max min)/2 then G=255 else
G=roundup(255-(1-normalisointi)*255)
B=0
Kiitti pirusti ... .
Pitäsköhän viel vähän jatkaa tätä ja tehä tohon makron alkuun kysymys missä se kysyy nuo min ja max arvon ja mitä liukuväriä haluaa käyttää niin tää olisi käyttökelpoinen kaikille. Laittaa jonnekkin paremmin sitten esille? Ei tämä nyt kumminkaan mikään ihan turha väsäys ole, muutkin varmaan miettiny tämmöstä.
Pystyy varmaan tekee jonkun ponnahdus boksin missä on lootat min ja max arvoille ja liukuvalikko eri liukuväreille.
Pystyykö ne värit iskee sitte jonkun CASEn sisään tai jotoin muuta vastaavaa?
Mitä mieltä ... tai joku muu asiasta kiinnostunut? Voin tehä parit liukkarit(sininen-punainen ainakin ja käänteiset tosta sin-pun ja ensimmäisestä(pun-kel-vihr)) ku musta muuhun ei varmaan ole.
Vähä mietin noita käänteisiä värejä niin nehän saa vaan kääntämällä arvon nurinperin.
if arvomin and arvo
Pikku korjaus: B=roundup(121-(1-normalisointi)*34)
Vahingossa jäi vanhoja arvoja ja min arvon kohdalle tuli pieni "värihyppy".