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

Opgelost <> "" vervangen door 'is een getal'

Dit topic is als opgelost gemarkeerd
Status
Niet open voor verdere reacties.

trainers

Verenigingslid
Lid geworden
8 feb 2012
Berichten
209
Office versie
MS 365
Zie https://www.helpmij.nl/forum/thread...en-cel-binnen-een-gebied.973812/#post-6407866

Werkt prima, maar soms zit er op de betreffende regel een cel met een spatie. Die cel wordt dus ook gekleurd, hetgeen ook logisch is.
Heb zitten stoeien met IsNumeric maar kom hier niet verder mee. Ook gekeken of <0 en >0 werkte, uiteraard dus niet want een lege cel is altijd <0.

Code:
Option Explicit
Dim CL As Variant

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    If Not Intersect(Target, [OMSCHRIJVING]) Is Nothing Then
        [B3:F8].Interior.Color = xlNone
        For Each CL In Target.Resize(, 5)
            If CL <> "" Then CL.Interior.Color = 13434879
'            If CL IsNumeric Then CL.Interior.Color = 13434879   'werkt niet
'            If CL = Numeric Then CL.Interior.Color = 13434879   'werkt niet
            Next
    Else
        [B3:F8].Interior.Color = xlNone
    End If
End Sub

OMSCHRIJVING is overigens een benoemde range.
Bedoeling is dat de cellen waar een bedrag in staat (kan zowel positief alsook negatief zijn) van een kleurtje worden voorzien.

Waar zit mijn denkfout?

Groet,
Trainers
 

Bijlagen

Niet alles bekeken maar hier in ieder geval.
If CL IsNumeric then
moet zijn:
If isnumeric(cl) then
 
Dank voor je reactie HSV, maar geeft niet het gewenste resultaat.
 
Of wat AHulpje al zei:
Code:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    Dim CL As Range
    Range("B3:F8").Interior.Color = xlNone
    If Not Intersect(Target, [OMSCHRIJVING]) Is Nothing Then
        For Each CL In Target.Resize(, 5)
            If Trim(CL) <> "" Then CL.Interior.Color = 13434879
        Next
    End If
End Sub
 
@emields: dank voor je bijdrage maar geeft niet het gewenste resultaat.
Alle cellen met en bedrag worden nu gekleurd.

@AHulpje en @edmoor
BINGO!
Mijn dank. :)

Groet,
Trainers
 
1. gebruik ingebouwde excelmethoden i.c. specialcells
2. vermijd dubbele instrukties
3. stroomlijn VBA-code

Code:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    On Error Resume Next
    [B3:F8].Interior.Color = xlNone

     For Each it In Intersect(Target, [OMSCHRIJVING]).Resize(, 5).SpecialCells(2, 1)
        it.Interior.Color = 13434879
     Next
End Sub
 
Zeer gestroomlijnd, complimenten snb.
Echter wordt de cel in kolom B niet gekleurd.

Groet,
Trainers
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan