Avatar billede jath08ac Forsker
24. juli 2018 - 09:05 Der er 7 kommentarer og
1 løsning

Formatering af celle + VBA kodning

Hej,

Jeg har lavet nedenstående koder som driller.

I kolonne O vil jeg gerne have en VBA kode til at gøre følgende, afhængig af hvad der står i kolonne O:
- Hvis der er en formel i cellen skal baggrundfarven være gul
- Hvis cellen er tom skal baggrundsfarven være neutral
- Hvis man taster en værdi i cellen, så skal baggrundsfarven være orange

Håber nogen kan hjælpe.

Jeg har som sagt lavet nedenstående kode som driller:

Private Sub Worksheet_SelectionChange(ByVal Target As Range)

Application.ScreenUpdating = False

For Each cell In Range("O3:O10000")
       
        If cell.HasFormula Then
            With cell.Interior
                .ColorIndex = 6
                '.Pattern = xlSolid
            End With
        ElseIf cell.Value = "" Then
            cell.Interior.ColorIndex = xlNone
        Else
            cell.Interior.ColorIndex = 45
       
        End If
    Next cell


End Sub
Avatar billede store-morten Ekspert
24. juli 2018 - 12:56 #1
Prøv:
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("O3:O10000")) Is Nothing Then
Application.ScreenUpdating = False

    If IsEmpty(Target) Then
    Target.Interior.ColorIndex = xlNone

    ElseIf Target.HasFormula Then
    Target.Interior.ColorIndex = 6

    ElseIf IsNumeric(Target) Then
    Target.Interior.ColorIndex = 45

    Else
    Target.Interior.ColorIndex = xlNone

    End If

End If
Application.ScreenUpdating = True
End Sub
Avatar billede jath08ac Forsker
25. juli 2018 - 12:15 #2
@ store-morten
Det fungerer desværre ikke. I kolonne O3 står der =K3, O4 står der =K4 osv. osv.
I kolonne K er der en formel (LOPSLAG), som slår en pris op.
Avatar billede store-morten Ekspert
25. juli 2018 - 12:42 #3
Og du er opmærksom på at makroen kun køres på cellen der ændres?

Prøv at skrive: =K3 i celle K4
Avatar billede store-morten Ekspert
25. juli 2018 - 12:46 #4
Ups.... Prøv at skrive: =K3 i celle O4
Avatar billede store-morten Ekspert
25. juli 2018 - 13:02 #5
I din kode starter du med: Application.ScreenUpdating = False
Men du sætter den ikke til: True igen?

Så måske virker det ikke i dit Ark. (Endnu ;-) )
Avatar billede jath08ac Forsker
25. juli 2018 - 13:12 #6
Jeg kan ikke få det til at fungerer :-(
Avatar billede store-morten Ekspert
25. juli 2018 - 13:15 #7
Prøv at køre denne kode:
Sub SætFormat_i_O()

Application.ScreenUpdating = False

Set Rg = Range("O3:O10000")

For Each cell In Rg

    If IsEmpty(cell) Then
    cell.Interior.ColorIndex = xlNone

    ElseIf cell.HasFormula Then
    cell.Interior.ColorIndex = 6

    ElseIf IsNumeric(cell) Then
    cell.Interior.ColorIndex = 45

    Else
    cell.Interior.ColorIndex = xlNone

    End If

Next
Application.ScreenUpdating = True
End Sub
Avatar billede store-morten Ekspert
26. juli 2018 - 13:08 #8
Fik du det til at virke :-)

Min ide er at koden i #1 ændre formatet løbende i O3:O10000 en celle af gangen ved ændring i cellen.

Koden i #7 formaterer cellerne i O3:O10000 og skal kun køres en gang, der er ingen grund til at løbe alle celler igennem hver gang der ændres i arket, derfor den første kode.
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