Avatar billede prinsib Seniormester
14. februar 2016 - 16:28 Der er 14 kommentarer og
1 løsning

Betinget formatering

Hej Alle. Er der en som vil hjælpe mig med et lille problem?
Jeg har 3 kolonner med tal i. Jeg har en celle hvori alle tallene bliver lagt sammen. Jeg har en anden celle som jeg også lægger alle tal sammen i (f.eks. C17), men hvis man trykker på en celle i en af de 3 koloner (f.eks. D2)  skal baggrundsfarven i (D2)farves rød, og tallet som står i cellen trækkes fra i (C17). Hvis jeg trykker på den samme celle igen (D2) skal tallet lægges til (C17) igen, og den røde baggrundsfarve fjernes igen. Dette skal kunne ske i alle celler i de 3 kolonner.
Kan dette lade sig gøre uden makro?
Jeg bruger både excel 2003 og 2010.
Håber det jeg har skrevet er til at forstå.
Hilsen Ib
På forhånd tak.
Avatar billede natkatten Mester
14. februar 2016 - 16:39 #1
Hvis jeg forstår det med "at trykke på" som dobbeltklikke, så er jeg ret sikker på, at det ikke kan lade sig gøre uden at benytte VBA.
Avatar billede prinsib Seniormester
14. februar 2016 - 16:58 #2
Hej natkatten.
Det er rigtigt forstået, men om det er et enkelt eller dobbelttrykke er ligegyldigt, men du har nok ret i, at det ikke kan laves uden VBA.
Kan du eller andre lave det med VBA er det så også ok.
Det var for øvrigt excel 2002 og 2010 jeg bruger, så koden skulle helst kunne bruges til begge udgaver.
Hvis dette ikke kan laves, vil jeg gerne bede en kode til 2002 først. Så lukker jeg det her spørgsmål og opretter et nyt.
Ib
Avatar billede store-morten Ekspert
14. februar 2016 - 19:01 #3
Prøv, Som virker på A2:C11
I begge tilfælde gøres værdien negative:
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
If Not Intersect(Target, Range("A2:C11")) Is Nothing Then

    If Target.Value > 0 Then
    Target = "-" & Target.Value
    With Selection.Interior
            .Color = 255
    End With
    Else
    Target = Target.Value - Target.Value * 2
    With Selection.Interior
            .Pattern = xlNone
            .TintAndShade = 0
            .PatternTintAndShade = 0
    End With
    End If

Target.Offset(1, 0).Activate
End If
End Sub


Alternativ: Formater cellerne til: Tal, negative: Røde
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
If Not Intersect(Target, Range("A2:C11")) Is Nothing Then

    If Target.Value > 0 Then
    Target = "-" & Target.Value
    Else
    Target = Target.Value - Target.Value * 2
    End If

Target.Offset(1, 0).Activate
End If
End Sub
Avatar billede prinsib Seniormester
16. februar 2016 - 14:08 #4
Hej store-morten.
Tak for dine svar og undskyld mit langsomme svar.
Det første forslag virker næsten ok.
Der sker desværre det, at når jeg dobbelt klikker i f.eks. A2 farver den rigtig nok A2 baggrund rød og trækker tallet fra, men den springer ned i A3 og trækker det tal fra også.
Hvad gør jeg galt?
Ib
Avatar billede prinsib Seniormester
16. februar 2016 - 14:53 #5
Hej igen morten.
Den nederste kode trækker også tallet i cellen under fra, og så farver den kun tallet rødt.
Ib
Avatar billede store-morten Ekspert
16. februar 2016 - 21:14 #6
Prøv:

I et Modul
Function SumColor(ran As Range) As Double
    colo = 255
    colsum = 0
    For Each c In ran.Cells
        If c.Interior.Color = colo Then
            colsum = colsum + c.Value
        End If
    Next c
SumColor = colsum
End Function

Og på Arket:
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
If Not Intersect(Target, Range("A2:C11")) Is Nothing Then

    If Target.Interior.Color = 255 Then
    Target.Interior.Color = 16777215
        Else
    Target.Interior.Color = 255
    End If

Target.Offset(1, 0).Activate
End If
Calculate
End Sub

"Jeg har en celle hvori alle tallene bliver lagt sammen (f.eks. A1). Jeg har en anden celle som jeg også lægger alle tal sammen i (f.eks. C17)"

Og denne formel i C17: =A1-SumColor(A2:C11)
Avatar billede prinsib Seniormester
17. februar 2016 - 17:13 #7
Hej.
Det her virker også næsten, men jeg kan ikke finde ud af at tilpasse koderne og formlerne.
I D15 lægges tallene sammen sådan her.
=SUM(E2:E11;H2:H11;K2:K11)
Så hvordan skal formlen i D17 så se ud?
Hvad skal der så rettes i koderne?
Ib
Avatar billede store-morten Ekspert
17. februar 2016 - 19:05 #8
Prøv:
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
If Not Intersect(Target, Range("E2:E11,H2:H11,K2:K11")) Is Nothing Then

    If Target.Interior.Color = 255 Then
    Target.Interior.Color = 16777215
        Else
    Target.Interior.Color = 255
    End If

Target.Offset(1, 0).Activate
End If
Range("D17").FormulaR1C1 = _
"=R[-2]C-(SumColor(R[-15]C[4]:R[-6]C[4])+SumColor(R[-15]C[7]:R[-6]C[7])+SumColor(R[-15]C[1]:R[-6]C[1]))"
End Sub


Formlen i D17 skrives af makroen, for at beregne, ved ændring i Range("E2:E11,H2:H11,K2:K11")
Avatar billede store-morten Ekspert
17. februar 2016 - 19:06 #9
Du skal beholde:
I et Modul
Function SumColor(ran As Range)
Avatar billede prinsib Seniormester
18. februar 2016 - 22:35 #10
Hej Morten. Nu virker det helt perfekt.
Tusind tak.
Jeg har lige et spørgsmål. Jeg kunne godt tænke mig at låse arket, så man kun kunne trykke i de 3 kolonner, og resten er låst. Kunne ikke lige få det til at virke. Har du et forslag? Ellers send et svar så du kan få points.
Hilsen Ib
Avatar billede store-morten Ekspert
18. februar 2016 - 23:23 #11
Velbekomme.

Fjern lås i Range("E2:E11,H2:H11,K2:K11") og D17
Beskyt ark, husk at vinge: Formater celler, af.

Dog kan værdier ændres i Range("E2:E11,H2:H11,K2:K11") og D17
D17 skrives igen ved dobbelt tryk i Range("E2:E11,H2:H11,K2:K11")
Avatar billede prinsib Seniormester
19. februar 2016 - 17:38 #12
Tak Morten.
Fik ikke fjernet lås på D17, så det er nok derfor det ikke virkede. Får ikke tid til at teste før søndag, men tak igen.
Ib
Avatar billede prinsib Seniormester
19. februar 2016 - 17:40 #13
Nej nu fik jeg da rigtig kludret i det.
Send lige et nyt svar Morten. Sorry
Ib
Avatar billede prinsib Seniormester
24. februar 2016 - 17:46 #14
Morten vil du ikke sende et svar, så få dine velfortjente points,
og vi kan få lukket denne tråd.
Tak igen
IB
Avatar billede store-morten Ekspert
26. februar 2016 - 20:48 #15
Tråden er lukket, da du har Accepteret dit eget 'svar' i indlæg 12

Du kan evt. oprette et nyt spørgsmål, med teksten point: til store-morten og henvise til dette: http://www.eksperten.dk/spm/1009112#reply_8211645
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

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