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

Vereenvoudigen code

Status
Niet open voor verdere reacties.

Guidolavespa

Gebruiker
Lid geworden
1 dec 2001
Berichten
152
Wie kan mijn onderstaande code eens onder de loep nemen. Ze werkt maar ik ben er niet tevreden over.

Controle cellen zijn J6(leveringdatum) en J7(opstartdatum), datum velden die al naar gelang leeg, foutief of een datum bevatten iets aan een opmaak wijzigen.

Wordt de cel G9 gewijzigd dan wordt de procedure uitgevoerd.




Private Sub Worksheet_Change(ByVal Target As Excel.Range)
If Target.Address <> "$G$9" Then Exit Sub


If IsError(Range("J7")) = True Then
Range("J5") = ""
Range("J7").Interior.ColorIndex = 40
MsgBox "Machine niet gevonden !", vbExclamation, "Fout"
Exit Sub
End If

If Range("J6").Value = "" Then
Range("J5") = ""
Range("J7").Interior.ColorIndex = 40
Else
'Opgestart is leeg
If Range("J7").Value = "" Then
'indien leverdatum groter dan vandaag - 1 jaar > groen
If CDate(Range("J6").Value) > (Date - 365) Then
Range("J7").Interior.ColorIndex = 4
Range("J5") = "GARANTIE"
'Range("G9").Select
Exit Sub
Else
Range("J7").Interior.ColorIndex = 3
Range("J5") = "UIT GARANTIE!"
'Range("G9").Select
Exit Sub
End If
End If

If CDate(Range("J7").Value) < (Date - 365) Then
'indien opstart kleiner dan vandaag - 1 jaar > rood
Range("J7").Interior.ColorIndex = 3
Range("J5") = "UIT GARANTIE!"
'Range("G9").Select
Else
'groen
Range("J7").Interior.ColorIndex = 4
Range("J5") = "GARANTIE"
'Range("G9").Select
End If
End If


End Sub
 
In plaats van het werkblad te belasten met een macro denk ik dat je beter gebruik kan maken van een formule in J5 (eventueel met voorwaardelijke opmaak om de foutmelding duidelijk te markeren)

=ALS(J6="";"";ALS(ISFOUT(J7);"Machine niet gevonden !";ALS(J7="";ALS(J6>VANDAAG()-365;"GARANTIE";"UIT GARANTIE !");ALS(J7>VANDAAG()-365;"GARANTIE";"UIT GARANTIE !"))))

en voorwaardelijke opmaak in J7. Selecteer in het linkse veld telkens Formule is en gebruik dan volgende formules

Voorwaarde 1 : =OF(J6="";ISFOUT(J7))

Voorwaarde 2 : =J5="GARANTIE"

Voorwaarde 3 : =J5="UIT GARANTIE !"
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan