Avatar billede nemlig Professor
30. januar 2015 - 15:06 Der er 15 kommentarer og
2 løsninger

Betinget formatering afhængig af 4 resultater

Hejsa.
Jeg har en celle A1, som skal have en baggrundsfarve, afhængig af værdien i celle B1.
Hvis B1 = tom, så skal celle A1 ikke have nogen baggrundsfarve
Hvis B1 = "Proces", så skal celle A1 have gul baggrundsfarve
Hvis B1 = "Afvist", så skal celle A1 have rød baggrundsfarve
Hvis B1 = "Godkendt", så skal celle A1 have grøn baggrundfarve

Kan det mon klares med betinget formatering eller skal vi fx over i noget VBA?
Avatar billede supertekst Ekspert
30. januar 2015 - 15:30 #1
Hvis VBA:

Private Sub Worksheet_Change(ByVal Target As Range)
Dim farveNr As Integer
    If Target.Address = "$B$1" Then
        If Target = "" Then
            Range("A1").Interior.ColorIndex = xlColorIndexNone
        Else
            If Target = "Proces" Then
                Range("A1").Interior.ColorIndex = 6
            Else
                If Target = "Afvist" Then
                    Range("A1").Interior.ColorIndex = 3
                Else
                    If Target = "Godkendt" Then
                        Range("A1").Interior.ColorIndex = 4
                    End If
                End If
            End If
        End If
    End If
       
End Sub
Avatar billede store-morten Ekspert
30. januar 2015 - 15:31 #2
Kan det mon klares med betinget formatering?

Ja

http://gratisupload.dk/vis/719181
Avatar billede store-morten Ekspert
30. januar 2015 - 15:52 #3
VBA kunne også se sådan ud:
Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.Address = "$B$1" Then
        If Target = "" Then Target.Offset(0, -1).Interior.ColorIndex = xlColorIndexNone
        If Target = "Proces" Then Target.Offset(0, -1).Interior.ColorIndex = 6
        If Target = "Afvist" Then Target.Offset(0, -1).Interior.ColorIndex = 3
        If Target = "Godkendt" Then Target.Offset(0, -1).Interior.ColorIndex = 4
    End If
End Sub
Avatar billede nemlig Professor
30. januar 2015 - 16:15 #4
Tak for input.
Jeg fik desværre ikke nævnt, at jeg skal bruge løsningen i cellerne A1:A50 og tilsvarende tjekkes på samme rækkenr. i kolonne B.
Eks; A4 tjekker værdi i B4.
Avatar billede store-morten Ekspert
30. januar 2015 - 17:26 #5
Private Sub Worksheet_Change(ByVal Target As Range)
    If Not Application.Intersect(Target, Range("B1:B50")) Is Nothing Then
        If Target = "" Then Target.Offset(0, -1).Interior.ColorIndex = xlColorIndexNone
        If Target = "Proces" Then Target.Offset(0, -1).Interior.ColorIndex = 6
        If Target = "Afvist" Then Target.Offset(0, -1).Interior.ColorIndex = 3
        If Target = "Godkendt" Then Target.Offset(0, -1).Interior.ColorIndex = 4
    End If
End Sub
Avatar billede store-morten Ekspert
30. januar 2015 - 17:54 #6
Betinget formatering:

http://gupl.dk/719187/
Avatar billede nemlig Professor
31. januar 2015 - 11:45 #7
Hejsa og tak for jeres input.
Så kom jeg endelig i gang og har afprøvet lidt.

Den betingede formatering virker fint. Så det er en fin løsning.
Jeg kan dog godt tænke mig, at få VBA til at virke.

#5 Virker ikke, men jeg gør måske noget forkert.

Jeg har smidt koden i et "module".
Men jeg kan ikke lige se, hvordan jeg aktiverer koden.
Avatar billede supertekst Ekspert
31. januar 2015 - 11:47 #8
Prøv at lægge kode "under det relevante ark"
Avatar billede nemlig Professor
31. januar 2015 - 12:30 #9
Jeg takker for nogle superløsninger.
Smid venligst et svar :)

Lige et afsluttende spørgsmål.
I min ægte kode, har jeg valgmulighederne i kolonne H.
Dermed er VBA ændret til:

If Target = "Afvist" Then Target.Offset(0, -7).Interior.ColorIndex = 3

Men hvis jeg nu vil formatere cellerne i både kolonne A og kolonne B (fx A1:B1), hvordan skal Target,Offset() så angives.
Avatar billede supertekst Ekspert
31. januar 2015 - 14:11 #10
Range(Target.Offset(0, -7), Target.Offset(0, -6)).Interior.ColorIndex = 6
Avatar billede supertekst Ekspert
31. januar 2015 - 14:12 #11
PS: Eksempel fra række med "Proces"
Avatar billede nemlig Professor
31. januar 2015 - 14:42 #12
Det er bare så perfekt. :)
Smider du et svar.
Avatar billede supertekst Ekspert
31. januar 2015 - 15:21 #13
Jeg har allerede lagt et svar under #1
Avatar billede nemlig Professor
31. januar 2015 - 18:56 #14
Jeg deler pointene. Vil Store-Morten smide et svar.
Avatar billede store-morten Ekspert
31. januar 2015 - 22:34 #15
Ok, velbekomme
Avatar billede nemlig Professor
05. februar 2015 - 11:43 #16
#5 Jeg har en lille udfordring, idet jeg får debug fejl, hvis jeg vil fx. vil rydde mit regneark. Jeg markerer området, jeg vil slette, herunder områderne, hvor jeg har angivet mine valg med fx "I proces", "Afvist", "Accept", og trykker på [Delete].
Det virker fint, hvis jeg blot slettet værdien i én celle, men det fejler ved et celleområde.

Nogen nem løsning?
Skal jeg oprette nyt spørgsmål, da jeg gerne giver 100 point.
Jeg kan også gøre det efter løsningen.




Private Sub Worksheet_Change(ByVal Target As Range)
    Application.ScreenUpdating = False
        ActiveSheet.Unprotect
            If Not Application.Intersect(Target, Range("H3:H50")) Is Nothing Then
                If Target = "" Then Range(Target.Offset(0, -7), Target.Offset(0, -2)).Interior.ColorIndex = xlColorIndexNone
                If Target = "I proces" Then Range(Target.Offset(0, -7), Target.Offset(0, -2)).Interior.ColorIndex = 6
                If Target = "Afvist" Then Range(Target.Offset(0, -7), Target.Offset(0, -2)).Interior.ColorIndex = 3
                If Target = "Accept" Then Range(Target.Offset(0, -7), Target.Offset(0, -2)).Interior.ColorIndex = 4
            End If
        ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True
    Application.ScreenUpdating = True
End Sub
Avatar billede store-morten Ekspert
05. februar 2015 - 19:48 #17
Prøv denne, sletter celle farve til venstre for det markerde område, når der vælges "Delete" Dog også uden for område H3:H50
Private Sub Worksheet_Change(ByVal Target As Range)
On Error GoTo ErrHandler
    Application.ScreenUpdating = False
        ActiveSheet.Unprotect
            If Not Application.Intersect(Target, Range("H3:H50")) Is Nothing Then
                If Target = "" Then Range(Target.Offset(0, -7), Target.Offset(0, -2)).Interior.ColorIndex = xlColorIndexNone
                If Target = "I proces" Then Range(Target.Offset(0, -7), Target.Offset(0, -2)).Interior.ColorIndex = 6
                If Target = "Afvist" Then Range(Target.Offset(0, -7), Target.Offset(0, -2)).Interior.ColorIndex = 3
                If Target = "Accept" Then Range(Target.Offset(0, -7), Target.Offset(0, -2)).Interior.ColorIndex = 4
            End If
        ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True
      Application.ScreenUpdating = True
      Exit Sub
ErrHandler:
Range(Target.Offset(0, -7), Target.Offset(0, -2)).Interior.ColorIndex = xlColorIndexNone
Application.ScreenUpdating = True
End Sub
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