Ehdollinen muotoilu tunnistamaan kaava

Haluan värjätä solun oranssiksi, kun solussa on kaava/funkio ja solun pitää olla punainen kun soluun on käsin syötetty data. Voiko ehdollisen muotoilun saamaan tunnistamaan tilanne kun solussa on kaava tai kun kaava on siitä poistettu käsinsyötöllä?
4969
Äänestä

Muut lukivat myös

Vastaukset 4

Vanhimmat

Avaa VBE editori: ALT F11
Avaa Project Explorer: CTRL R
Etsi tiedostosi vasemmalta johon haluat toiminnon ja kaksoisklikkaa sitä
Valitse: Insert>Module, kopioi alla oleva koodi (3 riviä pitkä) ja liitä se avautuvaan ikkunaan

Function IsFormula(cell_ref As Range)
IsFormula = cell_ref.HasFormula
End Function

Palaa takaisin Exceliin: ALT Q

Valitse hiirellä ne solut johon haluat Ehdollisen muotoilun.
Avaa "Ehdollinen muotoilu"
Valitse "Kaavan arvo" ja viereiseen laatikkoon =IsFormula(A1) - A1 tilalle laitat sen solun osoitteen josta aloitit valitsemaan hiirellä muotoiluun mukaan halutut solut
Muotoile sitten sopivaksi (oranssi)
OK

Äänestä
  • Kiitoksia varsin yksityiskohtaisesta vastauksesta.

    Käytin tuota funktiota ehdollisessa muotoilussa, mutta se hidasti merkittävästi taulun nopeutta. Ehdollinen muotoilu on 600 solussa, joten ei ehkä ihme. Voiko ehtollisen muotoilun tarkistus intervallia tai tarkistustilanteita muuttaa?

    Tyytynen tarkistamaan painikkeesta suoritettavalla makrolla funktion olemassa olon
    If Cells(i, a).HasFormula Then
    Cells(i, a).Interior.ColorIndex = 40
    Else: Cells(i, a).Interior.ColorIndex = 36
    End If

    Sama makro suoritetaan myös tallentaessa ja avatessa tiedosto

    Äänestä

  • aakennus kirjoitti:

    Kiitoksia varsin yksityiskohtaisesta vastauksesta.

    Käytin tuota funktiota ehdollisessa muotoilussa, mutta se hidasti merkittävästi taulun nopeutta. Ehdollinen muotoilu on 600 solussa, joten ei ehkä ihme. Voiko ehtollisen muotoilun tarkistus intervallia tai tarkistustilanteita muuttaa?

    Tyytynen tarkistamaan painikkeesta suoritettavalla makrolla funktion olemassa olon
    If Cells(i, a).HasFormula Then
    Cells(i, a).Interior.ColorIndex = 40
    Else: Cells(i, a).Interior.ColorIndex = 36
    End If

    Sama makro suoritetaan myös tallentaessa ja avatessa tiedosto

    Vastaan omaa kysymykseeni. Nyt kaavan tarkistus tehdään kun kyseistä solun arvoa rämplätään käsin.

    Private Sub Worksheet_Change(ByVal Target As Range)
    If Intersect(Target, Range("L6:P6,L8:P12")) Is Nothing Then
    Exit Sub
    Else
    If Target.Cells.HasFormula Then
    Target.Cells.Interior.ColorIndex = 40
    Else: Target.Cells.Interior.ColorIndex = 36
    End If
    End If
    End Sub

    Äänestä

  • aakennus kirjoitti:

    Vastaan omaa kysymykseeni. Nyt kaavan tarkistus tehdään kun kyseistä solun arvoa rämplätään käsin.

    Private Sub Worksheet_Change(ByVal Target As Range)
    If Intersect(Target, Range("L6:P6,L8:P12")) Is Nothing Then
    Exit Sub
    Else
    If Target.Cells.HasFormula Then
    Target.Cells.Interior.ColorIndex = 40
    Else: Target.Cells.Interior.ColorIndex = 36
    End If
    End If
    End Sub

    sivu löytyi jossa temppu tehdään ilman VBA-koodia, muuten saanut sitä toimimaan suomalaisessa Excelissä. Siinä käytetään vanhaa (Excel 4) funktiota GET.CELL
    http://www.mrexcel.com/forum/showthread.php?t=20611

    Äänestä

Kommentoi aloitusta


aakennus kirjoitti:

Haluan värjätä solun oranssiksi, kun solussa on kaava/funkio ja solun pitää olla punainen kun soluun on käsin syötetty data. Voiko ehdollisen muotoilun saamaan tunnistamaan tilanne kun solussa on kaava tai kun kaava on siitä poistettu käsinsyötöllä?

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