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ä?
Ehdollinen muotoilu tunnistamaan kaava
aakennus
4969
0Äänestä
Muut lukivat myös
Odottaa vastausta
Näihin keskusteluihin ei ole vielä vastattu. Ole ensimmäinen.
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
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
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