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

Macro om IBAN-rekeningnummers te formatteren

Status
Niet open voor verdere reacties.

tomswaelen

Gebruiker
Lid geworden
8 dec 2004
Berichten
349
Ik heb onderstaande macro die alle gegevens in de range 'Rekeningnummers' formatteert als een IBAN, dwz in hoofdletters zetten (nl wordt NL, be wordt BE enzovoort), en groeperen in groepjes van vier.

Code:
Private Sub Worksheet_Change(ByVal Target As Range)

'Groepeer IBAN-nummer in groepjes van vier

Dim i As Long, y As Long
If Not Intersect(Target, Range("Rekeningnummers")) Is Nothing And Target.Count = 1 Then
 Application.EnableEvents = False
      Target = Replace(Target, " ", "")
      For i = 1 To Len(Target) Step 4
         Target.Characters(i + y, 0).Insert (" ")
         y = y + 1
       Next i
    Target = Mid(UCase(Target), 2)
   Application.EnableEvents = True
 End If

End Sub

Alleen kan in die range ook nog andere info geschreven worden, het is niet de bedoeling dat de macro dan reageert. Hoe vang ik dit het best op? Het gaat in de praktijk altijd om Belgische rekeningnummers. Hoe kan ik hier in bouwen dat de macro enkel moet reageren als de input begint met BE? (of als er andere manieren zijn... :) )
 
Met If (Left(Target, 2)) = "BE" Then
 
Misschien te simpel?:

if left(jouw input,2) = BE then
jouw code
else
exit sub

Kedesx
 
Ik vind deze ook wel mooi.
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("Rekeningnummers")) Is Nothing And Target.Count = 1 Then
 If LCase(Left(Target, 2)) = "be" Then
   Application.EnableEvents = False
    Target = Trim(UCase(Format(Target & String(Len(Target) Mod 4, " "), Replace(Space(Len(Target) \ 4), " ", "@@@@ "))))
   Application.EnableEvents = True
 End If
End If
End Sub
 
Harry,
Code:
Target = Trim(UCase(Format(Target & String(Len(Target) Mod 4, " "), Replace(Space(Len(Target) \ 4), " ", "@@@@ "))))
deze gaat in mijn collectie, bedankt.:thumb:
 
Als je later nog eens terugkijkt, dan zie je met een heldere geest dat het nog wat korter kan (datgene hiervoor is me meerdere keren overkomen, dus geen kritiek op jou)
Code:
target = Trim(UCase(Format(target, Replace(Space(Len(target) \ 4), " ", "@@@@ "))))
 
Mijn complimenten @alphamax.

Iemand anders kwam de eer ook toe die ik plaatste.
 
Status
Niet open voor verdere reacties.
Steun Ons

Nieuwste berichten

Terug
Bovenaan Onderaan