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

Kenteken formaat aanpassen

Status
Niet open voor verdere reacties.

Ricky2

Gebruiker
Lid geworden
16 mei 2008
Berichten
20
Sinds kort voert het Rijksdienst voor wegverkeer een nieuw formaat kenteken.
Wie kan mij helpen met een stukje VBA of een formule (doch deze zal wellicht te complex worden) om onderstaande voorbeeld kentekens om te zetten.

De bedoeling is dat het kentekenveld omgezet wordt zoals het op de kentekenplaat van een auto vermeld staat

Kentekens:

47PLRT --> 47-PL-RT
45GPV1 --> 45-GPV-1
35JBYF --> 35-JB-YF
4GHJ-57 --> 4-GHJ-57

Feitelijk:
Als in de kenteken-string 3 alphanumerieke tekens naast elkaar voorkomen zet dan links en rechtsdaarvan een dash ('-"), in alle andere gevallen zet om de 2 posities een dash.

Wie weet dit op te lossen ??

Ricky2
 
Laatst bewerkt:
In de A-kolom van bijgevoegd bestand staan de oorspronkelijke kentekens.
In de C-kolom staat de functie Kenteken die automatisch een kenteken omzet in de gewenste layout.

Met vriendelijke groet,


Roncancio
 
Laatst bewerkt:
Roncancio bedankt

Roncancio

Ik ben onder de indruk....:eek:
Thanx!:thumb:
 
Ben wel benieuwd, hoe heb je dit nu gedaan? Waar kan ik de eigenschappen van je functie vinden?
 
Kenteken formaat aanpassen zonder functie

Een knap staaltje vb script door een functie te creëren die het kenteken in een goed formaat neerzet.

Echter ik loop tegen een ander probleem aan. Als ik nl een aantal werkbladen waarin deze functie wordt gebruikt kopieer naar een ander XLS bestand dan werkt de functie niet.

Nu moet ik omslachtig de onderliggende vba code meekopiëren.

Kan de functie ook in een formule worden samengevat ? Dus zonder VBA ?

gREETZ

Ricky2
 
Een knap staaltje vb script door een functie te creëren die het kenteken in een goed formaat neerzet.

Echter ik loop tegen een ander probleem aan. Als ik nl een aantal werkbladen waarin deze functie wordt gebruikt kopieer naar een ander XLS bestand dan werkt de functie niet.

Nu moet ik omslachtig de onderliggende vba code meekopiëren.

Kan de functie ook in een formule worden samengevat ? Dus zonder VBA ?

gREETZ

Ricky2

Bij deze:
Code:
=ALS(OF(ISFOUT(LINKS(A1;1)+1);ISFOUT(RECHTS(A1;1)+1));LINKS(A1;2)&"-"&DEEL(A1;3;2)&"-"&RECHTS(A1;2);ALS(ISFOUT(LINKS(A1;2)+1);LINKS(A1;1)&"-"&DEEL(A1;2;3)&"-"&RECHTS(A1;2);LINKS(A1;2)&"-"&DEEL(A1;3;3)&"-"&RECHTS(A1;1)))

Met vriendelijke groet,


Roncancio
 
Ricky2, Je kan de functie óók in je Personal.xls (NL = Persnlk.xls) plakken. Dan kan je 'm in al je mappen gebruiken.

Groet, Leo
 
Nog een oplossing

Ik wil iedereen bedanken die hebben meegedacht.
Ik heb geïnspireerd op jullie bijdrage ook een subroutine in elkaar geknuttseld die precies doet wat ik wil:

Code:
Sub Format_Kent(ByRef TargetSheet As String, RowID As Integer, ColumnID As String)

    ' Deze subroutine wijzigt het kentekenformaat in de juiste format
    ' Voorbeelden:
    ' ============
    ' 47PLRT --> 47-PL-RT
    ' 45GPV5 --> 45-GPV-5
    ' 6TYU35 --> 6-TYU-35
    ' 35JF99 --> 35-JF-99
    ' enzovoorts
    '
    ' Parameters
    ' ==========
    ' TargetSheet   = Het werkblad waar de bewerking op moeten uitgevoerd
    ' ColumnID      = De kolom (A,B,C etc) waar de kentekens staan
    ' RowID           = Regelnummer, welke in combinatie met ColumnID de startpositie
    '                        bepaalt van de te wijzigen cellen. (Rij 2 meestal i.v.m. de
    '                        kolomkoppen/headers

    Dim strNP As String
    Dim iPos As Integer
    Dim Kenteken As String
    
    For i = RowID To Sheets(TargetSheet).Range(ColumnID & Rows.Count).End(xlUp).Row
        Sheets(TargetSheet).Select
        Range(ColumnID & i).Select
        strNP = ActiveCell.Text
        
        If IsNumeric(Left(strNP, 1)) = True And IsNumeric(Right(strNP, 1)) Then
            iPos = 1
            While IsNumeric(Mid(strNP, iPos, 1))
                iPos = iPos + 1
            Wend
            Kenteken = Left(strNP, iPos - 1) & "-" & Mid(strNP, iPos, 3) & "-" & Right(strNP, 4 - iPos)
        Else
            Kenteken = Left(strNP, 2) & "-" & Mid(strNP, 3, 2) & "-" & Right(strNP, 2)
        End If

        ActiveCell.Value = Kenteken
        ActiveCell.Offset(1, 0).Select
    Next
End Sub

Nogmaals bedankt allen !
 
Laatst bewerkt:
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan