verkeerde cel verkleurt hoe kan dat, wat doe ik verkeerd.

  • Onderwerp starter Onderwerp starter bo69
  • Startdatum Startdatum
Status
Niet open voor verdere reacties.

bo69

Gebruiker
Lid geworden
15 jul 2012
Berichten
28
De code hieronder werkt goed, maar als ik in cel f12 sta en 26 invul en daarna op de enterknop druk word de cel onder de f12 zwart en niet de cel f12.


Code:
Private Sub Worksheet_Change(ByVal Target As Range)
     If Target.Address = "$F$12" And Target = 26 Then
     With Selection.Interior
        .Pattern = xlSolid
        .PatternColorIndex = xlAutomatic
        .ThemeColor = xlThemeColorLight1
        .TintAndShade = 0
        .PatternTintAndShade = 0
    End With
    End If
    If Target.Address = "$F$12" And Target = 3 Then
    With Selection.Interior
        .Pattern = xlSolid
        .PatternColorIndex = xlAutomatic
        .Color = 255
        .TintAndShade = 0
        .PatternTintAndShade = 0
    End With
End If
    If Target.Address = "$F$12" And Target = 0 Then
    With Selection.Interior
        .Pattern = xlSolid
        .PatternColorIndex = xlAutomatic
        .Color = 5287936
        .TintAndShade = 0
        .PatternTintAndShade = 0
    End With
    End If
End Sub
 
Laatst bewerkt door een moderator:
Dit komt doordat je nadat je op enter hebt gedrukt cel F13 geselecteerd is. en je zegt in de macro maak de selectie zwart, rood of groen.

Met de volgende code is dat probleem verholpen.

Code:
Private Sub Worksheet_Change(ByVal Target As Range)
[COLOR="#FF0000"]Range("F12").Select[/COLOR]
If Target.Address = "$F$12" And Target = 26 Then
With Selection.Interior
.Pattern = xlSolid
.PatternColorIndex = xlAutomatic
.ThemeColor = xlThemeColorLight1
.TintAndShade = 0
.PatternTintAndShade = 0
End With
End If
If Target.Address = "$F$12" And Target = 3 Then
With Selection.Interior
.Pattern = xlSolid
.PatternColorIndex = xlAutomatic
.Color = 255
.TintAndShade = 0
.PatternTintAndShade = 0
End With
End If
If Target.Address = "$F$12" And Target = 0 Then
With Selection.Interior
.Pattern = xlSolid
.PatternColorIndex = xlAutomatic
.Color = 5287936
.TintAndShade = 0
.PatternTintAndShade = 0
End With
End If
End Sub
 
Laatst bewerkt:
Bij voorgaande antwoord ga je bij een verandering van het werkblad altijd terug naar cel F12.

Misschien voldoet de volgende code meer aan je wensen.

Code:
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address = "$F$12" And Target = 26 Then
With Range("F12").Interior
.Pattern = xlSolid
.PatternColorIndex = xlAutomatic
.ThemeColor = xlThemeColorLight1
.TintAndShade = 0
.PatternTintAndShade = 0
End With
End If
If Target.Address = "$F$12" And Target = 3 Then
With Range("F12").Interior
.Pattern = xlSolid
.PatternColorIndex = xlAutomatic
.Color = 255
.TintAndShade = 0
.PatternTintAndShade = 0
End With
End If
If Target.Address = "$F$12" And Target = 0 Then
With Range("F12").Interior
.Pattern = xlSolid
.PatternColorIndex = xlAutomatic
.Color = 5287936
.TintAndShade = 0
.PatternTintAndShade = 0
End With
End If
End Sub

Ik heb selection. Interior vervangen door Range("F12").Interior.
 
bedankt voor de snelle reactie het werkt perfect :d
 
ik heb mijn vel beveiligt hoe werkt dit als ik dit achter een sheet plak met de code van boven in.

Code:
ActiveSheet.Unprotect Password:="bo1222"



 ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True, Password:="bo1222"
 
Laatst bewerkt door een moderator:
Door de code zo te plaatsen haalt hij na een verandering op het werkblad de beveiliging eraf en beveiligd hem op het eind van de macro ook weer.

Code:
Private Sub Worksheet_Change(ByVal Target As Range)
[COLOR="#FF0000"]ActiveSheet.Unprotect Password:="bo1222"[/COLOR]
If Target.Address = "$F$12" And Target = 26 Then
With Range("F12").Interior
.Pattern = xlSolid
.PatternColorIndex = xlAutomatic
.ThemeColor = xlThemeColorLight1
.TintAndShade = 0
.PatternTintAndShade = 0
End With
End If
If Target.Address = "$F$12" And Target = 3 Then
With Range("F12").Interior
.Pattern = xlSolid
.PatternColorIndex = xlAutomatic
.Color = 255
.TintAndShade = 0
.PatternTintAndShade = 0
End With
End If
If Target.Address = "$F$12" And Target = 0 Then
With Range("F12").Interior
.Pattern = xlSolid
.PatternColorIndex = xlAutomatic
.Color = 5287936
.TintAndShade = 0
.PatternTintAndShade = 0
End With
End If
[COLOR="#FF0000"]ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True, Password:="bo1222"[/COLOR]
End Sub
 
Zo lukt het ook
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
     If Target.Address = "$F$12" Then
     ActiveSheet.Unprotect Password:="bo1222"
     With Target
        Select Case .Value
            Case 26
                nColor = 1
            Case 3
                nColor = 2
            Case 0
                nColor = 3
        End Select
    .Interior.Color = Choose(nColor, 2, 255, 5287936)
    End With
    ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True, Password:="bo1222"
    End If
End Sub
 
Als het werkblad is beveiligd kan er toch ook niets in cel F12 gewijzigd worden ? Dan kan deze code toch niet uitgevoerd worden ?

Zo kan het ook in een onbeveiligd werkblad: (vergelijk eens met de omvang van de eerste code die je plaatste)

Code:
Private Sub Worksheet_Change(ByVal Target As Range)
  If Target.Address = "$F$12" Then Target.Interior.Color = Choose(Application.Match(Target, Array(0,3,26), 0),5287936,255,2)
End Sub

of

Code:
Private Sub Worksheet_Change(ByVal Target As Range)
  If Target.Address = "$F$12" Then Target.Interior.Color = Switch(Target = 0,5287936,Target = 3, 255,Target = 26, 2)
End Sub

@Jan: beveiligt
 
Laatst bewerkt:
waar moet ik schrijven of klikken dat het opgelost is en waar kan ik weer een nieuwe vraag stellen.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan