Ik kreeg recentelijk de volgende vraag: 'Ik wil eigenlijk automatisch een msgbox laten verschijnen als de waarde in cel B1 ingevuld is en cel A1 leeg is. Is dit mogelijk?'
In dit geval ging het er om dat in zijn Excel bestand een werknemersnummer werd ingevuld, zonder dat er een naam van een werknemer ingevuld was!
Ik heb toen 2 mogelijkheden uitgewerkt:
VBA
DOWNLOAD HIER VOORBEELD BESTAND 1
M.b.v. een klein stukje VBA code kunnen we afdwingen dat er gekeken wordt na een 'change' van het werkblad of A2 leeg is en B2 niet, in dat geval wordt er een melding getoond:
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
If Range("B2").Value <> Empty And Range("A2").Value = Empty Then
MsgBox "vul een naam in!", vbCritical, "waarschuwing"
End If
End Sub
Bovenstaande code controleert slechts 1 cel combinatie (A2 / B2). Als we dit uit willen breiden naar bijvoorbeeld 10 regels, vervang dan bovenstaande door:
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
Dim MyRange As RangeDim currentCellDim nextCellDim i As Integer
Set currentCell = Range("A2")
Do While i < 10
Set nextCell = currentCell.Offset(0, 1)
If currentCell.Value = Empty And nextCell.Value <> Empty Then
MsgBox "vul een naam in!", vbCritical, "waarschuwing"
End If
Set currentCell = currentCell.Offset(1, 0)
i = i + 1
Loop
End Sub
Gegevensvalidatie
DOWNLOAD HIER VOORBEELD BESTAND 2
Een alternatieve manier zonder VBA is het gebruik van Excel gegevensvaldiatie. Ga op de cel staan waar je de validatie op uit wilt laten voeren (in ons voorbeeld B3) en kies op het lint, het tabblad 'GEGEVENS' --> 'Hulpmiddelen voor gegevens' --> 'Gegevens validatie.
Bij 'INSTELLINGEN' kiezen we bij 'TOESTAAN' voor 'AANGEPAST' en bij de formule geven we op:
=(EN(EN(ISLEEG(A3)=ONWAAR;ISLEEG(B3)=ONWAAR);LENGTE(B3)>=6))
'Lege cellen negeren' laten we 'uit'.
Met Copy / Paste trekken we dit door naar alle cellen die we willen valideren. Zoals je misschien al hebt gezien controleert deze validatie ook nog of de lengte van de code die we opgeven minimaal 6 posities is!
Als we nu in het voorbeeld bestand een code opgeven zonder naam of een code die < 6 tekens is dan 'triggert' dat de validatie: