Avatar billede dane022 Seniormester
09. december 2019 - 14:25 Der er 6 kommentarer og
1 løsning

Hjælp til hvorfor celler farves gule

Hej

Nedenstående kode køres når man indtaster et beløb i kolonne X. Alt ved den virker, bortset fra at cellen 6 kolonner til højre farves gul selvom betingelserne ikke er opfyldt. Så selvom f.eks. x6 er større end 0 og offset 23 = offset 34, så bliver celle AD6 stadig farvet gul, selvom betingelserne ikke er opfyldte og det dermed bør være betingelserne under Else der burde træde i kraft. Det skal siges at kommandoerne med at AA6 sættes til "ja" og at der ikke skrives nogen kommentar, virker som det skal.
Hvad kan årsagen være?

Private Sub Worksheet_Change(ByVal Target As Range)
On Error Resume Next
If Not Intersect(Target, Range("x6:x205")) Is Nothing Then
    If (Target.Offset(0, 0).Value) > 0 And (Target.Offset(0, 34).Value) > (Target.Offset(0, 23).Value) Then
        Target.Offset(0, 3).Value = "Ja"
        Target.Offset(0, 6).Interior.ColorIndex = 27
        Target.Offset(0, 6).AddComment "Vær opmærksom på, at 
        medarbejderen er deltidsansat."
    Else
        Target.Offset(0, 3).Value = ""
        Target.Offset(0, 6).Interior.ColorIndex = xlNone
        Target.Offset(0, 6).Comment.Delete
    End If
End If
Avatar billede claes57 Ekspert
09. december 2019 - 14:45 #1
kan du ikke bare rette "xlNone" til tallet for farven hvid?
Avatar billede dane022 Seniormester
09. december 2019 - 14:47 #2
Den har tidligere stået til farven 0 uden at gjorde nogen forskel. Problemet er lidt hvorfor den tager fat i den gule farve når betingelsen ikke er opfyldt.
Avatar billede claes57 Ekspert
09. december 2019 - 15:02 #3
flyt lidt rundt i koden til
If Not Intersect(Target, Range("x6:x205")) Is Nothing Then
    Target.Offset(0, 3).Value = ""
    Target.Offset(0, 6).Interior.ColorIndex = xlNone
    Target.Offset(0, 6).Comment.Delete
    If (Target.Offset(0, 0).Value) > 0 And (Target.Offset(0, 34).Value) > (Target.Offset(0, 23).Value) Then
        Target.Offset(0, 3).Value = "Ja"
        Target.Offset(0, 6).Interior.ColorIndex = 27
        Target.Offset(0, 6).AddComment "Vær opmærksom på, at
        medarbejderen er deltidsansat."
    End If
End If
Avatar billede Jan K Ekspert
09. december 2019 - 16:08 #4
Jeg forstår ikke helt Target.Offset(0,0). Det er vel det samme som Target?
Avatar billede claes57 Ekspert
09. december 2019 - 16:57 #5
Target.Offset(0,0) er aktuel celle - det ser pænt ud når man senere refererer til celler i forhold til den.
Avatar billede store-morten Ekspert
09. december 2019 - 17:29 #6
Det er fordi din kode skriver i arket, så den går i selv sving.

Prøv:
Private Sub Worksheet_Change(ByVal Target As Range)
On Error Resume Next
If Not Intersect(Target, Range("x6:x205")) Is Nothing Then
Application.EnableEvents = False
    If (Target.Offset(0, 0).Value) > 0 And (Target.Offset(0, 34).Value) > (Target.Offset(0, 23).Value) Then
        Target.Offset(0, 3).Value = "Ja"
        Target.Offset(0, 6).Interior.ColorIndex = 27
        Target.Offset(0, 6).AddComment "Vær opmærksom på, at medarbejderen er deltidsansat."
    Else
        Target.Offset(0, 3).Value = ""
        Target.Offset(0, 6).Interior.ColorIndex = xlNone
        Target.Offset(0, 6).Comment.Delete
    End If
End If
Application.EnableEvents = True
End Sub
Avatar billede dane022 Seniormester
09. december 2019 - 19:28 #7
Utroligt jeg ikke tænkte på det. Tak for løsning
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