• 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 VBA code voor opmaak maar alleen voor getallen

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

vrouw

Terugkerende gebruiker
Lid geworden
27 mrt 2010
Berichten
1.477
Hallo allemaal.

Ik probeer een macro te maken dat als de waarde in de Cel groter is dan 15 dat die cel grijs word.
Met onderstaande code lukt dat ook, echter word iedere tekst ook grijs.

Hoe maak ik dat ie alleen de cellen met getallen grijs maakt?


Code:
Sub testing()
Dim x As Range
For Each x In ActiveSheet.Range("K6:AH50")
With x
Select Case .Value
         Case Is >= 5
        .Interior.ColorIndex = 15 'Gray'
    Case Else
        .Interior.ColorIndex = xlNone
  End Select
 End With
Next
End Sub
 
Ik ben geen vba deskundige maar zo dacht ik

Code:
Sub KleurCellen()
    Dim cel As Range
    For Each cel In ActiveSheet.Range("K6:AH50")
        cel.Interior.ColorIndex = IIf(cel.Value > 15, 15, xlNone)
    Next cel
End Sub
 
Test deze eens:
Code:
Sub testing()
    For Each x In ActiveSheet.Range("A1:A17")
        If IsNumeric(x.Value) Then
            x.Interior.ColorIndex = IIf(x.Value >= 5, 15, xlNone)
        End If
    Next
End Sub
 
Laatst bewerkt:
CSS:
Sub M_snb()
  For Each it In Range("K6:AH50").specialcells(2,1)
    it.Interior.ColorIndex = 2 - 13 * (it > 15)
  next
End Sub
 
Ik vind de code van SNB er wel goed uitzien maar dan worden er ook cellen leeg gemaakt .
Bijv cellen N16 & N17 maar ook bijv cel T10 maar er zijn er meer.
Dat is niet de bedoeling natuurlijk.

Maar ik zie nu dat er ook cellen met een letter (hoofdletter J) in de cellen kan staan.
Die zou ik dan Rood willen hebben.

Hoe gaat dat dan?
 

Bijlagen

Laatst bewerkt:
maar dan worden er ook cellen leeg gemaakt .
Daar klopt niets van. Dat kan deze code helemaal niet.
Als je cellen hebt met een witte of grijze letterkleur kan het zijn dat je de inhoud niet kunt lezen omdat de voorgrond gelijk is aan de achtergrond. Niet leesbaar <> leeg.
 
Moet per se met VBA of mag voorwaardelijke opmaak ook? Lijkt mij simpeler...

Formulevoorwaarde voor bereik K6:AH50:
Code:
=EN(ISGETAL(K6);K6>15)
 
Daar klopt niets van. Dat kan deze code helemaal niet.
Als je cellen hebt met een witte of grijze letterkleur kan het zijn dat je de inhoud niet kunt lezen omdat de voorgrond gelijk is aan de achtergrond. Niet leesbaar <> leeg.
raar toch, want als ik het bestand eerst open dan is het wel zichtbaar en na het runnen van de macro zijn die cellen leeg
 
Cellen zijn niet leeg, kijk maar in de formulebalk
 
Cellen zijn idd niet leeg volgens de formule balk maar wel als format.

Ik weet niet hoe dat kan en ook niet hoe op te lossen.

Hieronder: Voor de macro

voor macro.png
Hieronder: Na de Macro

Na Macro.png
Zo te zien gebeurt het alleen bij de cellen die de format van de cel hebben met witte cijfers.
format.png

Bestaande format word dus door deze macro verwijderd? Eigenlijk wil ik dat de bestaande format blijft bestaan zoals die is.
 
Laatst bewerkt:
Het is volstrekt logisch dat een wit karakter op een witte achtergrond niet te onderscheiden is, en aangezien je het bestaande "format" (wat bedoel je daarmee eigenlijk?) niet wenst te wijzigen zul je dat moeten accepteren.
Maar misschien wil je toch zoiets opnemen in je macro:
Code:
it.Font.ColorIndex = xlAutomatic
 
Het zou heel prettig zijn als de huidige format van het document (daarmee bedoel ik de huidige gekleurde cellen) behouden blijven.
De gekleurde cellen (de rode en grijze) zijn allemaal met negatieve waarden. Daar moet de macro dus moet niets mee doen.
 
Test deze eens:
 

Bijlagen

Probeer deze eens, een kleine variatie op je eigen code, de rode en groene kleur blijven behouden:
Code:
Sub testing()
    'jouw rood = 3
    'jouw groen = 10
    Dim x As Range
    For Each x In ActiveSheet.Range("K6:AH50")
        With x
            Select Case Val(.Value)
                Case Is >= 5
                    .Interior.ColorIndex = 15 'Gray'
                Case Is <= 0
                    If .Interior.ColorIndex <> 3 And .Interior.ColorIndex <> 10 Then .Interior.ColorIndex = xlNone
            End Select
        End With
    Next
End Sub
 
Is dit nou zo moeilijk om zelf aan te passen ?
CSS:
Sub M_snb()
  For Each it In Range("K6:AH50").specialcells(2,1)
   if it>15 and it.Interior.ColorIndex = -4142 then it.interior.colorindex=15
  next
End Sub
 
Bedankt allemaal voor het mee denken. Ik ga er mee aan de slag om te kijken wat voor mij het beste werkt.🙏
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan