Painonapeilla värisoluihin kirjaimet

Minkälainen olisi VB -kaava, kun tarve olisi seuraavanlainen rajatulle alueelle ja tietyille riveille?
Alue olisi E5-IJ40, mutta kaava koskisi vain rivejä: 5, 7, 9, 11, 13, 15, 17, 19, 21, 23, 25, 27, 29, 31 ja 33.
Eli, painonapeilla valittaisiin minkä värisiä ja kirjaimisia soluista tulisi, kun niitä hiirellä klikkaisi.
Excel-taulukon alareunaan kaava-alueen ulkopuolelle tulisi tarvittava määrä -ehkä 5 kpl -painonappeja, joilla valitaan haluttu solun väri, joissa olisi ennalta määrätty kirjain (L, P, X, W..ym..).
Värit voisivat olla melko selkeitä neon-hohtoisia, tai sitten voisin ne itse valita kunhan saisin tietää värien koodit.
Simppeli toive, hiirellä klikkaisi haluamiaan soluja.. - nyt haluan soluista harmaita, joissa on P -kirjain -nyt haluan kellertävänvihreitä, joissa W -kirjain -nyt haluan vaalean sinisen, jossa R -kirjain jne..

Omat kyvyt ei riitä koodaamiseen, viilailuun ehkä kyllä.
590
Äänestä

Muut lukivat myös

Vastaukset 5

Vanhimmat

2 eri koodonpätkää ...
liitä eka taulukon moduuliin ja toka tavalliseen moduuliin
Jos kokeilet jälkimmäistä poista silloin taulukon moduulista toi eka koodi tai hipsaa koodi.

Eka värjää solun jos ehto täyttyy taulukossa kun tieto muuttuu
Toka koodi käy läpi alueen ja värjää ehtojen mukaan
Mielestäni ei nappeja tohon kannata laittaa kuin 1?

Kumpikin helposti muokattavissa.


Private Sub Worksheet_Change(ByVal Target As Range)
Dim Alue1 As Range
Dim Alue2 As Range
Dim Alue3 As Range
'fiksaa alueet, selkeyden vuoksi jaettu osiin
Set Alue1 = Range("E5:IJ40")
Set Alue2 = Union(Range("5:5"), Range("7:7"), Range("9:9"), Range("11:11"), Range("13:13"), Range("15:15"), Range("17:17"), Range("19:19"), Range("21:21"), Range("23:23"), _
Range("25:25"), Range("27:27"), Range("29:29"), Range("31:31"), Range("33:33"))
Set Alue3 = Intersect(Alue1, Alue2)
'tsekataan onko oikea rivi alueella
If Not Intersect(Target, Alue3) Is Nothing Then
'tsekataan, että vain 1 solu valittuna
If Target.Cells.Count = 1 Then
'tsekataan kirjain ja sen perusteella väri- nyt 3 eri tavalla malliksi
Select Case UCase(Target)
Case "L"
Target.Interior.Color = vbRed
Case "P"
Target.Interior.ColorIndex = 7
Case "W"
Target.Interior.Color = RGB(0, 255, 0)
Case Else
Target.Interior.Color = xlNone
End Select
End If
End If
End Sub


Sub Värjää()
Dim Alue1 As Range
Dim Alue2 As Range
Dim Alue3 As Range
'fiksaa alueet, selkeyden vuoksi jaettu osiin
Set Alue1 = Range("E5:IJ40")
Set Alue2 = Union(Range("5:5"), Range("7:7"), Range("9:9"), Range("11:11"), Range("13:13"), Range("15:15"), Range("17:17"), Range("19:19"), Range("21:21"), Range("23:23"), _
Range("25:25"), Range("27:27"), Range("29:29"), Range("31:31"), Range("33:33"))
Set Alue3 = Intersect(Alue1, Alue2)

For Each solu In Alue3
'tsekataan kirjain ja sen perusteella väri- nyt 3 eri tavalla malliksi
Select Case UCase(solu)
Case "L"
solu.Interior.Color = vbRed
Case "P"
solu.Interior.ColorIndex = 7
Case "W"
solu.Interior.Color = RGB(0, 255, 0)
Case Else
solu.Interior.Color = xlNone
End Select

Next
End Sub

Äänestä
  • Kundepuu, en saa tätä toimimaan mitenkään. "Set Alue2" menee punaiseksi.. onko siinä mahdollisesti jokin virhe.

    Äänestä

  • Listailija kirjoitti:

    Kundepuu, en saa tätä toimimaan mitenkään. "Set Alue2" menee punaiseksi.. onko siinä mahdollisesti jokin virhe.

    Suomi24 tehtailee typeriä ylimääräisiä rivinvaihtoja. Kun rivi jatkuu, _ -merkin jälkeen ei saa olla tyhjää riviä, vaan jatkon pitää seurata heti.

    Äänestä

  • VikanaS24 kirjoitti:

    Suomi24 tehtailee typeriä ylimääräisiä rivinvaihtoja. Kun rivi jatkuu, _ -merkin jälkeen ei saa olla tyhjää riviä, vaan jatkon pitää seurata heti.

    Kyllä se on ihan "laillinen" rivinvaihto VBA koodissa.
    Eli rivin lopussa on _ sen jälkeen tyhjä välilyönti ja lopuksi painetaan ENTER rivinvaihdoksi ja koodia jatketaan seuraavalla rivillä normaalisti.
    Kopioi ja liitä ei tältä sivulta varmaankaan toimi, mutta kuten sanoit rivit menee koodissa punaiseksi ja se on silloin helppo korjata toimivaksi ylläolevan ohjeen mukaan.
    _ yleensä käytetään kun koodirivi menee pitkäksi. Käyttämällä _ rivinvaihtoa saadaan koodi selkeälukuisemmaksi.

    Äänestä

Kiitos Kunde. Hmm.. nyt meni sormi suuhun, en osaa hahmottaa noista kaavoista sitä oleellisinta.
Ajatus oli, että kun etukäteen klikkaan "Punaista L -nappia", voin hiirellä merkitä haluamani solut, jolloin ne muuttuvat punaisiksi ja niihin (musta) L-kirjain.

Äänestä

Kommentoi aloitusta


Listailija kirjoitti:

Minkälainen olisi VB -kaava, kun tarve olisi seuraavanlainen rajatulle alueelle ja tietyille riveille?
Alue olisi E5-IJ40, mutta kaava koskisi vain rivejä: 5, 7, 9, 11, 13, 15, 17, 19, 21, 23, 25, 27, 29, 31 ja 33.
Eli, painonapeilla valittaisiin minkä värisiä ja kirjaimisia soluista tulisi, kun niitä hiirellä klikkaisi.
Excel-taulukon alareunaan kaava-alueen ulkopuolelle tulisi tarvittava määrä -ehkä 5 kpl -painonappeja, joilla valitaan haluttu solun väri, joissa olisi ennalta määrätty kirjain (L, P, X, W..ym..).
Värit voisivat olla melko selkeitä neon-hohtoisia, tai sitten voisin ne itse valita kunhan saisin tietää värien koodit.
Simppeli toive, hiirellä klikkaisi haluamiaan soluja.. - nyt haluan soluista harmaita, joissa on P -kirjain -nyt haluan kellertävänvihreitä, joissa W -kirjain -nyt haluan vaalean sinisen, jossa R -kirjain jne..

Omat kyvyt ei riitä koodaamiseen, viilailuun ehkä kyllä.

Anonyymi
5000

Ilmoita asiaton sisältö

  • Sisältää materiaalia, joka on loukkaavaa, herjaavaa, rasistista, uhkailevaa tai ahdistelevaa.

  • Materiaali sisältää nimiä, yhteystietoja tai muita henkilökohtaisia tietoja. Julkisuuden henkilöistä, julkisissa viroissa toimivista ihmisistä sekä yritysten vastuuhenkilöistä saa keskustella työhön liittyen. Myös yksityiselämään liittyvistä asioista voi keskustella siltä osin, kuin niistä on julkisesti kerrottu.

  • Sisältää lapsille haitallista tai heiltä kiellettyä materiaalia. Seksuaalinen sisältö on sallittua aiheeseen tarkoitetuilla palstoilla, joiden ikäraja on 18 vuotta.

  • Lainvastaista sisältöä voi olla mm. yksityiselämää loukkaavan tiedon levitys, kiihottaminen kansanryhmää vastaan, laiton uhkaaminen, alaikäisiin liittyvä seksuaalinen sisältö/grooming, petokset, identiteettivarkaudet, kunnianloukkaukset ja tekijänoikeusrikkomukset.

  • Sisältö ei liity palstan tai keskusteluketjun aiheeseen.

  • Viesti ei ole suomea tai ruotsia (pl. International Forums), se sisältää mainontaa, se sisältää tekijänoikeuksin suojattua materiaalia, se on massapostitus tai jokin muu syy.

Jaa keskustelu