• Privacywetgeving
    Het is bij Helpmij.nl niet toegestaan om persoonsgegevens in een voorbeeld te plaatsen. Alle voorbeelden die persoonsgegevens bevatten zullen zonder opgaaf van reden verwijderd worden. In de vraag zal specifiek vermeld moeten worden dat het om fictieve namen gaat.

Code onafhankelijk van rij laten werken

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

Gum2

Gebruiker
Lid geworden
30 mrt 2007
Berichten
80
Ik heb een stukje code gemaakt om een rij in de letterkleur 'groen' te laten veranderen indien in kolom 'A' een '1' staat en in 'rood' indien in kolom 'B' een '0' staat.
Dit lukt op zich goed met de code:

Code:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
r = ActiveCell.Row

If Cells(r, 1) = "1" Then Range("A" & r, "J" & r).Font.Color = -16744448
If Cells(r, 2) = "0" Then Range("A" & r, "J" & r).Font.Color = -16776961
End Sub

Voorwaarde is nu alleen wel dat de verandering alleen plaats vindt in dezelfde regel.
Druk ik bijv. na het invoeren op 'enter' dan wordt een cel in de volgende regel actief en doet de code niets.
Hoe kan ik de code aanpassen zodat het niet uitmaakt welke cel ik actief maak na het invoeren van een '1' of '0' in de kolommen A of B en dat dan toch de betreffende regel van kleur veranderd?
 

Bijlagen

test deze eens uit

Ik heb het uitgetest en het werkt perfect !
Heel erg bedankt voor de hulp.
Zou je mij ook kunnen uitleggen hoe de code werkt? Wat is bijv. de functie van 'Intersect(Target, Range("A:B"))' en wat is de functie van (ByVal Target As Range)?
 
Vermijd select.
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("A:B")) Is Nothing Then
 r = Target.Row
  If Cells(r, 1) = 1 Then Range("A" & r, "J" & r).Font.ColorIndex = 10
  If Cells(r, 2) = 0 And Cells(r, 2) <> "" Then Range("A" & r, "J" & r).Font.ColorIndex = 3
 End If
End Sub
Of:
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("A:B")) Is Nothing Then
 r = Target.Row
  If Cells(r, 1) = 1 Then Cells(r, 1).Resize(, 10).Font.ColorIndex = 10
  If Cells(r, 2) = 0 And Cells(r, 2) <> "" Then Cells(r, 1).Resize(, 10).Font.ColorIndex = 3
 End If
End Sub
1). Als er niet iets in de kolommen A of B wordt ingevuld, loopt de code direct naar einde code.
2). Selecteer 'Byval" in de code en druk F1.
 
Laatst bewerkt:
@ HSV: Bedankt voor het meedenken, maar waarom select vermijden?
 
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
  If Not Intersect(Target, Range("A:B")) Is Nothing Then Cells(r, 1).Resize(, 10).Font.ColorIndex=iif(cells(target.row,1)=1,10,iif(cells(target.row,2)=0,3,target.font.colorindex))
End Sub
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan