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.
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
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!
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.
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