Rijen kleuren

Status
Niet open voor verdere reacties.

masala09

Gebruiker
Lid geworden
6 aug 2012
Berichten
886
Beste allen.

Ik heb een code welke in een aantal gevallen de rijen ter verduidelijking verschillend kleurt.

Hoewel deze werkt, heb ik toch over de opzet van de coderegel een vraag.

Voorbeeld:

Code:
    Sheets("Blad1").Range(Cells(UserRow ,1), Cells(UserRow ,13).Interior.ColorIndex = 4

Bovenstaande code werkt hetzelfde als

Code:
    Sheets("Blad1").Range(.Cells(UserRow ,1), .Cells(UserRow ,13).Interior.ColorIndex = 4

Het enige verschil is de .Cells i.p.v. Cells

Nu mijn vraag. Hoewel beide wel werken. Welke gebruik je wanneer of maakt dit in het gebruik helemaal niets uit. Ik moet er wel bij meegeven dat de code in een With wordt gebruikt.

Ik heb de eerste aangehouden.
 
Die .Cells geeft aan dat het gaat om het Cells object binnen het object dat je met With hebt gebruikt. Voorbeeldje:

Als de activesheet Blad1 is en je doet:
Code:
With Sheets("Blad2")
    .cells(1,1) = "Test"  ' <- Cel A1 op Blad2
     cells(1,1) = "Test"  ' <- Cel A1 op Blad1
End With
 
Laatst bewerkt:
Zoals Ed het heeft omschreven, maar dan van de andere kant bekeken.
Zonder punt hebben de cells in de code betrekking op de cellen van het actieve blad.
 
Oke dus toch .Cells.

Ik vroeg het mij af omdat ik dacht dat je met .Range in de With het gebied op het blad al aangaf. Zodoende ging ik er van uit dat Cells reeds sloeg op de range en dat je deze gewoon zonder voorgaande punt kon gebruiken.

Met jullie correctie is het dus zo dat je dan zowel de .Range en de .Cells gebruikt van Blad1 en niet van een ander blad.
 
Laatst bewerkt:
Zoals ik al zei, met de punt geef je aan dat je het object bedoeld binnen het object dat met With is aangegeven.
 
Maar wacht even. Voor ik dit afsluit. Ik moet wel correct blijven.

Code:
With Sheets("Blad1").Range(.Cells(UserRow ,1), .Cells(UserRow ,13).Interior
    If.... Then .ColorIndex = 4
    If.... Then .ColorIndex = xlNone

End If

Dan kan ik hier toch wel gewoon enkel Cells gebruiken daar ik direct naar het blad verwijs?
 
Laatst bewerkt:
Zo heeft alles betrekking op Blad1.
Code:
With Sheets("Blad1")
 .Range(.Cells(UserRow ,1), .Cells(UserRow ,13).Interior.ColorIndex = 4
end with
 
Als daar Blad1 je actieve blad is hoef je die hele With niet te gebruiken.
 
Zoals ik al zei, met de punt geef je aan dat je het object bedoeld binnen het object dat met With is aangegeven.

Dat stukje deed ik al zo en dat wist ik. Maar wellicht als ik de juiste codeopzet aangeef zoals in #6. Het voorbeeld was net iets anders.
 
Als je 'with' niet wil gebruiken, moet je het zo schrijven.
Code:
Sheets("Blad1").Range(Sheets("Blad1").Cells(UserRow ,1), Sheets("Blad1").Cells(UserRow ,13).Interior.ColorIndex = 4
 
Hmmm oke. Nee blad1 kan het actieve blad niet worden.

Dat staat helemaal los van het vraagstuk over het hoe en waarom van die punt voor een object.
 
Edmoor. Dat klopt. Dat stond er inderdaad los van.

Ik ben er zelf ook uit.

Code:
With Sheets("Gebruikers").Range(Cells(UserRow, 1), Cells(UserRow, 13)).Interior
        .ColorIndex = IIf(InlogOk, 4, xlNone)
        If Blok1 Then .ColorIndex = 5
        If Blok2 Then .ColorIndex = 6
End With

Bovenstaande code klopt.

VBA gaf een foutmelding bij het gebruik met .Cells. Dus anders dan ik in #6 had vermeld, moet ik hier Cells wel zonder voorgaande punt gebruiken.

Ik ga morgen eens op mijn gemak kijken waarom het in eerste wel met beide lukte. Voor nu duik in mijn mandje in.

Welterusten.
 
Laatst bewerkt:
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan