Avatar billede lunddata Nybegynder
19. februar 2006 - 16:23 Der er 32 kommentarer og
2 løsninger

"Reset" skriftfarve

Nedenstående virker fint med hensyn til at ændre baggrundsfarve:


farve = 4: stk = Range("k12").Value
    Range("b13:k14").Select
    Selection.Interior.ColorIndex = 0: Range("k12").Select
    Dim c As Range
    For Each c In Range("b13:k14")
      v = c.Value
      If v <= stk Then
      c.Interior.ColorIndex = farve
    End If
    Next

Hvordan får jeg skrifttypen til samtidigt at sættes tibage til hvid når værdien i området ("b13:k14")>værdien i ("k12")?
Avatar billede mvhansen Nybegynder
19. februar 2006 - 16:30 #1
Kan du ikke lave en betinget formatering

under <formater> betinget <formatering>


MVH

MVHANSEN
Avatar billede mvhansen Nybegynder
19. februar 2006 - 16:33 #2
Et gæt har ikke prøvet

mvh

mvhansen
Avatar billede excelent Ekspert
19. februar 2006 - 16:37 #3
prøv lige :
    farve = 4: stk = Range("c1").Value
    'farve = Range("a1").Value
    Range("d2:m2").Select
    Selection.Interior.ColorIndex = 0: Range("c1").Select
    Dim c As Range
   
    For Each c In Range("d2:m2")
      v = c.Value
      If v <= stk Then
      c.Interior.ColorIndex = farve
      If v > Range("k12").Value Then
      c.Font.ColorIndex = 2
    End If
    End If
Next
Avatar billede excelent Ekspert
19. februar 2006 - 16:47 #4
rettelse : her er hele subben

Private Sub Worksheet_Change(ByVal Target As Range)
    farve = 4: stk = Range("c1").Value
    'farve = Range("a1").Value
    Range("d2:m2").Select
    Selection.Interior.ColorIndex = 0: Range("c1").Select
    Dim c As Range
   
    For Each c In Range("d2:m2")
      v = c.Value
      If v <= stk Then
      c.Interior.ColorIndex = farve
      If v > Range("k12").Value Then
      c.Font.ColorIndex = 2
      Else
      c.Font.ColorIndex = 1
    End If
    End If
Next
End Sub
Avatar billede lunddata Nybegynder
19. februar 2006 - 16:48 #5
Åbenbart ikke så ligetil:
har tidligere fået hjælp af mvhansen til:
http://www.eksperten.dk/spm/687996
og det er faktisk ovenstående kode derfra.
Jeg er nødt til at fortsætte med koden og ikke bruge betinget formatering.
Når jeg tænker lidt over det er det muligt at jeg kolliderer med den betingede formatering jeg i forvejen har i brug.

Jeg har forsøgt med excelent forslag men uden den ønskede løsning.
Avatar billede excelent Ekspert
19. februar 2006 - 16:50 #6
har du prøvet den korrigerede version?
den virker her
Avatar billede lunddata Nybegynder
19. februar 2006 - 16:51 #7
Undskyld jeg blander jer to sammen mvhansen og excelent. Det var dig excelent der hjalp mig sidst
Avatar billede excelent Ekspert
19. februar 2006 - 16:54 #8
hvis jeg forstår dig ret, så skal værdierne i område d2:m2 være
hvid hvis de er større end værdi i celle k12, ellers skal de
være sorte ?
Avatar billede lunddata Nybegynder
19. februar 2006 - 17:03 #9
de skal være hvide (usynlige), men jeg kolliderer med min betingede formatering kan jeg se.
Jeg kan godt få skriftfarven til at være hvid uden for det betingede formaterede område.

Mit betingede formaterede område sætter rammer. Der kan sættes flere rammer end der sættes farvede baggrunde i rammmerne, dvs. at har jeg f.eks 10 rammer er de 8 (udfra værdien i k12) måske med farvet baggrund. De sidste 2 rammer med hvid baggrundsfarve har bare stadigvæk en farvet skrift!!!
Avatar billede excelent Ekspert
19. februar 2006 - 17:10 #10
hvis du vil have teksten i samme farve som baggrunden (usynlig)
så ret linie
c.Font.ColorIndex = 2
til
c.Font.ColorIndex = c.Interior.ColorIndex
Avatar billede excelent Ekspert
19. februar 2006 - 18:43 #11
hvis du vil fjerne betinget font farve gør du sådan :

marker de aktuelle celler, vælg betinget formatering i menuen
klik på 'Formater...',  klik på fanen 'skrifttype'
klik på knappen 'Ryd'

For du har ret i, at betinget formatering overruler subben
Avatar billede excelent Ekspert
19. februar 2006 - 18:45 #12
pas på ikke at klikke på fanen 'Kant' hvorved du risikerer
at slette dine rammer
Avatar billede lunddata Nybegynder
19. februar 2006 - 19:56 #13
Jeg vil stadig gerne have makroen til at virke både med reset af baggrundsfarve og skriftfarve.

Lidt underligt at det kører perfekt med reset af baggrundsfarve.
Er det ikke denne i koden som "resetter" baggrundsfarven:
Selection.Interior.ColorIndex = 0: Range("k12").Select
...man må da kunne få skriftfarven til at lave reset!!!
Avatar billede excelent Ekspert
19. februar 2006 - 20:21 #14
lad os lige tage et check

Når jeg har valgt 10 celler med ramme
og 8 celler med grøn og har
værdi d2=1, e2=2, f2=3, g2=4, h2=5, i2=6, j2=7, k2=8, l2=9, m2=10
og k12=5
så får jeg følgende :
d2=grøn med sort 1
e2=grøn med sort 2
f2=grøn med sort 3
g2=grøn med sort 4
h2=grøn med sort 5
i2=grøn med usynlig 6
j2=grøn med usynlig 7
j2=grøn med usynlig 8
l2=grøn med usynlig 9
m2=hvid med sort 10

er det et rigtigt resultat ?
Avatar billede excelent Ekspert
19. februar 2006 - 20:27 #15
rettelse l2=hvis med sort 9
Avatar billede excelent Ekspert
19. februar 2006 - 20:42 #16
og jo man kan godt resette skriftfarven, subben er rettet til det.


Private Sub Worksheet_Change(ByVal Target As Range)
    farve = 4
    stk = Range("c1").Value
    Range("d2:m2").Select
    Selection.Interior.ColorIndex = 0
    Selection.Font.ColorIndex = 1
    Range("c1").Select
   
    Dim c As Range
   
    For Each c In Range("d2:m2")
      v = c.Value
      If v <= stk Then
      c.Interior.ColorIndex = farve
      If v > Range("k12").Value Then
      c.Font.ColorIndex = c.Interior.ColorIndex '2
      Else
      c.Font.ColorIndex = 1
    End If
    End If
Next
End Sub
Avatar billede excelent Ekspert
19. februar 2006 - 20:50 #17
har du fjernet betinget skrift farve formatering, ?
har du efterprøvet den test jeg foreslog ?
og hvilket resultat fik du i så fald ?
?
Avatar billede brynil Nybegynder
19. februar 2006 - 21:20 #18
Excellent> Hvorfor bruger du 2 IF- sætninger og sammenligner med C1?

For mig ser det ud til at være tilstrækkeligt at tilføje en ELSE:

Selection.Interior.ColorIndex = 0: Range("k12").Select
Dim c As Range

For Each c In Range("b13:k14")
    v = c.Value
    If v <= stk Then
        c.Interior.ColorIndex = farve
    Else
        c.Font.ColorIndex = 2
    End If
Next
Avatar billede excelent Ekspert
19. februar 2006 - 21:29 #19
hej brynil
det er jo 2 forskellige betingelse
den første skal farve cellens baggrun hvis værdien er < end c1
den anden skal farve teksten hvis værdien er > end k12
Avatar billede brynil Nybegynder
19. februar 2006 - 21:32 #20
Jo, men jeg kan ikke se der er andre end dig der nævner C1. :))
Avatar billede lunddata Nybegynder
19. februar 2006 - 21:33 #21
Brynils virker med hensyn til at farve skriftfarven jvor baggrundsfarven er hvid. Dette slog ikke igennem ved excelents kode.
...Men brynils kode laver nu skriftfarven hvid på den farvede baggrund
Avatar billede excelent Ekspert
19. februar 2006 - 21:37 #22
well så prøv klik ovenstående link/tråd til oprindelig sub
Avatar billede lunddata Nybegynder
19. februar 2006 - 21:41 #23
Har afprøvet excelent 19/02-2006 20:42:22. Denne laver sort skriftfarve i hele området ("b13:k14") og altså ikke begrænset af værdien i k14.
Baggrundsfarverne er rigtig begrænset af værdien i k12
Avatar billede lunddata Nybegynder
19. februar 2006 - 21:45 #24
Til excelent 19/02-2006 21:37:16

Ja, men det er jo ikke godt nok da skriftfarven hvid ikke må være hvor der er baggrundsfarver
Avatar billede excelent Ekspert
19. februar 2006 - 21:46 #25
vil det sige du ikke anvender c1 til antal celler der skal farves grøn?
Avatar billede lunddata Nybegynder
19. februar 2006 - 21:49 #26
Rigtigt.
Jeg bruger også k12 til antal celler med grønt
Avatar billede lunddata Nybegynder
19. februar 2006 - 21:50 #27
Antal celler med grøn baggrund virker
Avatar billede excelent Ekspert
19. februar 2006 - 21:55 #28
så k12 bestemmer hvilke celler der skal være grøn
hvilke celler skal så være usynlige? dem uden grøn?
Avatar billede lunddata Nybegynder
19. februar 2006 - 21:57 #29
SÅDAN! Hurra!
Flere timers bøvl virker nu med dette:
farve = 4: stk = Range("k12").Value
    Range("b13:k14").Select
Selection.Interior.ColorIndex = 0: Range("k12").Select
Dim c As Range

For Each c In Range("b13:k14")
    v = c.Value
    If v <= stk Then
        c.Interior.ColorIndex = farve
        c.Font.ColorIndex = 4
         
    Else
        c.Font.ColorIndex = 2
    End If
Next

Var aldrig kommet på dette uden jeres hjælp!
Læg lige svar (begge to)
Jeg er nok lidt for fedtet med point. Jeg vil gerne oprette spm. igen og give flere point
Avatar billede brynil Nybegynder
19. februar 2006 - 21:59 #30
Jeg ved ikke rigtigt hvad det er du vil. Du fjerner jo selv farven fra området:

    Selection.Interior.ColorIndex = 0: Range("k12").Select

I så fald er det eneste logiske vel at sætte baggrundsfarven til hvid?

Måske kan du bruge denne:

Range("b13:k14").Select
Dim farve As Integer
Dim stk As Long
farve = 4
stk = Range("k12").Value

Dim c As Range
Dim f As Integer

For Each c In Range("b13:k14")
    v = c.Value
    If v <= stk Then
        c.Interior.ColorIndex = farve
    Else
        c.Select
        f = Selection.Interior.ColorIndex
        If f = -4142 Then f = 2
        c.Font.ColorIndex = f
    End If
Next
Avatar billede excelent Ekspert
19. februar 2006 - 22:00 #31
nej jeg er også stadig i tvivl
tag selv point, jeg springer over
Avatar billede lunddata Nybegynder
19. februar 2006 - 22:12 #32
Jeg synes jeg skylder jer begge to en forklaring hvordan det hele er bygget op:
b13:k14 indehoder værdierne 1,2,3,...20
I betinget formatering har jeg betingelsen at celleværdien skal være mindre end værdien i celle j12... der skal så sætes rammer.
I makroen har jeg brugt lunddata 19/02-2006 21:57:30.
Alt dette får præcist det frem jeg efterlyste og jeg er nu en lykkelig mand.
Jeg vil gerne præcisere at jeg ikke selv ville kunne have strikket løsningen sammen uden at I var på banen så I fortjener point og jeg mener stadigvæk at jeg MEGET gerne vil give flere point.
... Jeg kan nu komme vdere med projektet.
Avatar billede brynil Nybegynder
20. februar 2006 - 07:12 #33
Ok, svar ;)
Avatar billede excelent Ekspert
20. februar 2006 - 11:47 #34
husk at dialog er vigtig ved besvarelse af spørgsmål :-)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Excel kurser for alle niveauer og behov – find det kursus, der passer til dig

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester