automatisch herberekenen

Status
Niet open voor verdere reacties.

jofred

Gebruiker
Lid geworden
16 dec 2006
Berichten
172
Ik heb onderstaande functie gedefinieerd om uit te lezen of voorwaardelijke opmaak voor een cel is ingesteld.

Code:
Function VrwOpmaak(Cel As Range)
If Cel.FormatConditions.Count > 0 Then
    VrwOpmaak = "VrwOpmaak ingesteld"
Else
    VrwOpmaak = ""

End If
End Function

Dit werkt op zich naar behoren, alleen als de voorwaardelijke opmaak bij een cel wordt verwijderd, wordt de uitkomst van de functie niet automatisch aangepast. Ook niet als ik op de <F9>-toets (Herrekenen) druk.
Als ik voorwaardelijke opmaak instel op een cel, wordt de uitkomst van de functie - vreemdgenoeg - wel direct aangepast.

Is het mogelijk dat bij verwijderen van de voorwaardelijke opmaak dit direct zichtbaar wordt?
Zo ja, hoe kan ik dit bereiken?

Groet,

Jofred

N.B. Ik werk met Excel 2003
 
Wim,

Daar schiet ik dus niets mee op, want bij mij werkt dit niet.
Nu kun jij me vast wel vertellen hoe ik dit werkend kan krijgen. Het zal wel met een of andere instelling te maken hebben, alleen zou ik niet weten welke.:confused:

Bij voorbaat hartelijk voor het meedenken.
 
Als ik zou weten waarom het niet werkt, had ik het er wel bij gezet in mijn vorige post :confused:

Je zal dan moeten kijken of andere UDF's wel herberekend worden met F9. En of er VBA code draait op de achtergrond. Wat als dit in een nieuw bestand en applicatie nagebouwd wordt? Wat met de instellingen voor de berekening: kringverwijzingen - manueel berekenen - ...
Enz.
 
Ik kwam toevallig ergens een opmerking tegen dat je bij eigen gemaakte functies (UDF), aan het begin van de code het volgende commando zou moeten opnemen.

Code:
Application.Volatile

Ter lering ende vermaeck, voor de liefhebber nog de verder bewerkte code

Code:
Function VrwOpmaak(Cel As Range) As String
' Functie om na te gaan of er voorwaardelijke celopmaak in ingesteld
' De functie werkt bij één of meerdere cellen
Dim blnMeerCellen As Boolean
Dim intTeller As Integer
Dim lngTeller As Long
Dim strMelding As String
Dim strCelAdres As String

Application.Volatile
strMelding = " - Voorwaardelijke Opmaak ingesteld"
If Cel.Count > 1 Then
    blnMeerCellen = True
Else
    blnMeerCellen = False
End If

For intTeller = 1 To Cel.Columns.Count
    For lngTeller = 1 To Cel.Rows.Count
        If Cel.Cells(lngTeller, intTeller).FormatConditions.Count > 0 Then
                'bij gevonden voorwaardelijke opmaak in meerdere cellen,
                'wordt de uitkomst onder elkaar gezet
                If blnMeerCellen = True And Len(VrwOpmaak) > 0 Then
                    VrwOpmaak = VrwOpmaak & Chr(10)
                End If
            strCelAdres = Cel.Cells(lngTeller, intTeller).Address(ColumnAbsolute:=False, _
                                                                  RowAbsolute:=False)
            VrwOpmaak = VrwOpmaak & strCelAdres & strMelding
        End If
    
    Next lngTeller
Next intTeller
' uitkomst bij geen voorwaardelijke opmaak
If Len(VrwOpmaak) = 0 Then
    VrwOpmaak = "Geen" & Mid(strMelding, 3)
End If

End Function
 
Status
Niet open voor verdere reacties.
Steun Ons

Nieuwste berichten

Terug
Bovenaan Onderaan