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

Voorwaardelijke opmaak met vba

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

wiki

Gebruiker
Lid geworden
2 okt 2007
Berichten
576
Ik wil graag de volgende voorwaardelijke opmaak met vba in een cel plaatsen.
formule =
Code:
=rc[1]<>"""
opmaak tekst rood

gr wim
 
Ik heb ondertussen het volgende gevonden
Code:
ActiveCell.FormatConditions.Add Type:=xlCellValue, Operator:=xlNotEqual, Formula1:=1
                    ActiveCell.FormatConditions(1).Interior.ColorIndex = 22
deze werkt

wie weet hoe ik
Code:
Type:=xlCellValue
om kan zetten naar de formulevariant en wat moet ik doen met de operator en formula

Met de volgende aanpassing lukte het niet
Code:
ActiveCell.FormatConditions.Add Type:=xlFormula, Formula1:"=1"
                    ActiveCell.FormatConditions(1).Interior.ColorIndex = 22
 
Krijg nu wel de formule in het scherm van voorwaardelijke opmaak, maar de opmaak van de formule is niet goed:(
Code:
  ActiveCell.FormatConditions.Add Type:=xlExpression, Formula1:=1
de waarden worden weergegeven als tekst (tussen "") of ik krijg een compileerfout in vba.

gr wim
 
Zo lukt het wel.
Code:
ActiveCell.FormatConditions.Add Type:=xlExpression, Operator:=xlNotEqual, Formula1:="1"
                    ActiveCell.FormatConditions(1).Interior.ColorIndex = 22

2 wijzigingen:
- ipv xlFormula gebruik je xlExpression
- ipv Formula1:"=1" doe je Formula1:="1"

Met vriendelijke groet,


Roncancio
 
Zo lukt het me niet Roncancio
de output is geen formule, maar de waarde 1 zie bijlage fout
in het formulescherm van de voorwaardelijke opmaak heb ik een formule opmaak nodig zoals in bijlage juist

gr wim
 

Bijlagen

  • fout.jpg
    fout.jpg
    15,4 KB · Weergaven: 55
  • juist.jpg
    juist.jpg
    15,6 KB · Weergaven: 48
Zo dan?
Code:
ActiveCell.FormatConditions.Add Type:=xlExpression, Formula1:="=$B$1-$C$1=1"
                    ActiveCell.FormatConditions(1).Interior.ColorIndex = 8

Met vriendelijke groet,


Roncancio
 
Bedankt Roncancio,

Ik weet niet wat ik fout deed maar dit werkt:thumb:

gr Wim
 
Roncancio, misschien kun je nog helpen met het volgende:
Ik probeer de code in te passen in de volgende regels, maar dan werkt het niet meer:confused:

Code:
If Cells(rij, 6) <> "" And Cells(rij, 7) <> "" And Cells(rij, 8) <> "" Then
               Cells(rij, 9).Formula = "=Round(5*RC[-3]/(RC[-2]*RC[-1]),0)"
               Cells(rij, 9).NumberFormat = "0"
               Cells(rij, 9).FormatConditions.Add Type:=xlExpression, Formula1:="=rc[1]<>"""
               Cells(rij, 9).FormatConditions(1).Interior.ColorIndex = 8
           Else

gr wim
 
Roncancio, misschien kun je nog helpen met het volgende:
Ik probeer de code in te passen in de volgende regels, maar dan werkt het niet meer:confused:

Code:
If Cells(rij, 6) <> "" And Cells(rij, 7) <> "" And Cells(rij, 8) <> "" Then
               Cells(rij, 9).Formula = "=Round(5*RC[-3]/(RC[-2]*RC[-1]),0)"
               Cells(rij, 9).NumberFormat = "0"
               Cells(rij, 9).FormatConditions.Add Type:=xlExpression, Formula1:="=rc[1]<>"""
               Cells(rij, 9).FormatConditions(1).Interior.ColorIndex = 8
           Else

gr wim

Wat moet de voorwaardelijke opmaak controleren?

Met vriendelijke groet,


Roncancio
 
als de cel rechts ervan <> ""
opmaak:celkleur rood

gr wim
 
als de cel rechts ervan <> ""
opmaak:celkleur rood

gr wim

Dan is het IF-statement m.i. niet logisch.
De voorwaardelijke opmaak wordt pas geplaatst als de 3 cellen niet leeg zijn.

Met vriendelijke groet,


Roncancio
 
Als de drie cellen links gevuld zijn wordt een formule in de cel geplaatst, maar als de cel rechts gevuld is zal deze voorgaan in een volgende berekening. Vandaar dat ik een waarschuwing nodig heb als de cel rechts gevuld is dgv een voorwaardelijke opmaak.

gr wim
 
In plaats van Cells(rij,6) kan je ook gebruiken
- Cells(rij,"F")
- Range("F" & rij)

Hoe dan ook, zo kan het:

Code:
If Range("F" & rij & ":H" & rij).SpecialCells(xlCellTypeBlanks).Count = 0 Then
    Cells(rij, 9).Formula = "=Round(5*RC[-3]/(RC[-2]*RC[-1]),0)"
    Cells(rij, 9).NumberFormat = "0"
    Cells(rij, 9).FormatConditions.Add Type:=xlExpression, Formula1:="=INDIRECT(""J""& RIJ())<>"""""
    Cells(rij, 9).FormatConditions(1).Interior.ColorIndex = 8

Met vriendelijke groet,


Roncancio
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan