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

Controle BSN beginnend met 0

Status
Niet open voor verdere reacties.

Ocirne

Gebruiker
Lid geworden
6 okt 2015
Berichten
67
Hallo,

Ik maak gebruik van de volgende functie/macro voor controle of een BSN-nummer voldoet aan de 11-proef. Enig probleem daarbij is dat het niet werkt voor BSN's die starten met een 0 (nul), omdat Excel deze 0 niet meeneemt. Hoe kan de macro worden aangepast zodat deze ook goed werkt voor een BSN die begint met een nul?

Alvast bedankt.

Mvg,

Ocirne

Code:
Function BSN(bsnnummer As String) As String
Dim intT As Integer, intTotaal As Integer

If Len(bsnnummer) <> 9 Then
     BSN = "Fout: het BSN-nummer bestaat uit 9 cijfers!"
    Exit Function
Else
    For intT = 1 To Len(bsnnummer)


If Not IsNumeric(Mid(bsnnummer, intT, 1)) Then
    BSN = "Het BSN bevat géén letters!"
    Exit Function
End If

Next

For intT = Len(bsnnummer) To 1 Step -1
    If intT = 1 Then
    intTotaal = intTotaal + Mid(bsnnummer, 10 - intT, 1) * -intT
Else
    intTotaal = intTotaal + Mid(bsnnummer, 10 - intT, 1) * intT
End If
      
Next

If intTotaal Mod 11 = 0 Then
    BSN = "OK!"
Else
    BSN = "Fout!"
    End If
End If

End Function
 
Zorg ervoor dat de cel waar het BSN nummer in staat een tekst cel is en niet numeriek. Of geef daar het BSN nummer in vooraf gegaan door een enkele quote (').
 
Hoe simpel kan het zijn.... :eek:

Ik was in de veronderstelling dat de functie alleen met waardes overweg kon en niet met tekst. Nu werkt het helemaal naar behoren.

Thanks!
 
Of pak de input van de gebruiker op en zet die ALTIJD in het juiste format voor je procedure. Probeer dit maar 'ns uit....
Code:
Sub ff()
getal = 12345678

    Debug.Print Format(getal, String(9, "0"))

End Sub
Dan kan je het vast zelf wel verder oplossen. ;)
 
Kijk ook even naar dit, waar door gebruik te maken van juiste inspringpunten het geheel een stuk leesbaarder is:
Code:
Function BSN(bsnnummer As String) As String
    Dim intT As Integer, intTotaal As Integer
    
    If Len(bsnnummer) <> 9 Then
        BSN = "Fout: het BSN-nummer bestaat uit 9 cijfers!"
        Exit Function
    Else
        For intT = 1 To Len(bsnnummer)
            If Not IsNumeric(Mid(bsnnummer, intT, 1)) Then
                BSN = "Het BSN bevat géén letters!"
                Exit Function
            End If
        Next
    
        For intT = Len(bsnnummer) To 1 Step -1
            If intT = 1 Then
                intTotaal = intTotaal + Mid(bsnnummer, 10 - intT, 1) * -intT
            Else
                intTotaal = intTotaal + Mid(bsnnummer, 10 - intT, 1) * intT
            End If
        Next
    
        If intTotaal Mod 11 = 0 Then
            BSN = "OK!"
        Else
            BSN = "Fout!"
        End If
    End If
End Function
 
Laatst bewerkt:
Het kan ook met een formule:
Code:
=ALS(REST(SOMPRODUCT(DEEL(A1;RIJ(1:9);1)*{9;8;7;6;5;4;3;2;-1});11)=0;"OK!";"FOUT")
 
Laatst bewerkt:
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan