Avatar billede 2704hn Nybegynder
20. november 2014 - 13:19 Der er 4 kommentarer

Kør vba på flere celler ved ændring af en cell

Jeg er novice i dette og slår med følgende. Jeg ønsker ved ændringer i et bestemt felt at køre en case på en række af celler. Som det er nu fungerer den ved ændring af specifik celle.

Private Sub Worksheet_Change(ByVal Target As Range)
    If Intersect(Target, Range("K6:NU6")) Is Nothing Then Exit Sub
        Select Case Target
        Case "lø"
            Range(Cells(8, Target.Column), Cells(250, Target.Column)).Interior.ColorIndex = 4
        Case "sø"
            Range(Cells(8, Target.Column), Cells(250, Target.Column)).Interior.ColorIndex = 4
        Case "ma"
            Range(Cells(8, Target.Column), Cells(250, Target.Column)).Interior.ColorIndex = xlNone
        Case "ti"
            Range(Cells(8, Target.Column), Cells(250, Target.Column)).Interior.ColorIndex = xlNone
        Case "on"
            Range(Cells(8, Target.Column), Cells(250, Target.Column)).Interior.ColorIndex = xlNone
        Case "to"
            Range(Cells(8, Target.Column), Cells(250, Target.Column)).Interior.ColorIndex = xlNone
        Case "fr"
            Range(Cells(8, Target.Column), Cells(250, Target.Column)).Interior.ColorIndex = xlNone

    End Select
End Sub

Jeg har lavet en test med nedstående men kan ikke få den til at løbe cellerne igennem!

Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.Address = "$G$5" Then

Jeg skal have farvet weekender på en kalender som kan have forskellige start dato.

Håber der er en der kan hjælpe, på forhånd tak.
Avatar billede finb Ekspert
20. november 2014 - 13:28 #1
Efter hukommelsen:

for each celle in range
  If date(celle;dd)>5 then colorindex=4  ´dd betyder vist ugedag
    else colorindex=xlnone
  endif
next celle

eller også er det:

for each celle in range
  If weekday(celle;2)>5 then colorindex=4  ´2 for dk (1=usa)
    else colorindex=xlnone
  endif
next celle
Avatar billede 2704hn Nybegynder
20. november 2014 - 14:18 #2
Det kom til at se ud som følgende:

Private Sub Worksheet_Change(ByVal Target As Range)
   
    For Each celle In Range("S5:NU5")
        If Weekday(celle, 2) > 5 Then Range(Cells(8, Target.Column), Cells(20, Target.Column)).Interior.ColorIndex = 4
        Else: Range(Cells(8, Target.Column), Cells(250, Target.Column)).Interior.ColorIndex = xlNone
        End If
    Next celle

End Sub

Men den kan ikke lide "Else" og crasher den reagerer heller ikke på datoer men på ændring et vilkårligt sted!
Avatar billede finb Ekspert
20. november 2014 - 16:27 #3
prøv ElseIf i stedet for Else.
Du kan også starte med at lave alle om til xlNone,
og så kun køre if...then -uden Else.
Weekday: I usa er søndag vist lig med 1,
mens mandag er lig med 1 i DK.
Avatar billede 2704hn Nybegynder
05. december 2014 - 07:13 #4
Som jeg skrev i indledningen er jeg novice inden for dette og har derfor desværre ikke fået overstående løsning til at fungerer. Det der driller noget er følgende. Macroen skal kun køre ved ændring i en celle. Når der bliver ændret i denne celle skal den løbe en række andre celler igennem og farve en afgrænset mængde kolonner under. Det jeg startede med at lægge ind kan godt køre men kun ved ændring i den aktuelle celle. Som jeg skrev er jeg novice på området! Men tak for forslagene Finb
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