von hr.hartwig » Di, 04.09.2012 23:34
Hallo Jürgen!
Ich weiß nicht, ob Du inzwischen eine Lösung gefunden hast.
Hab heute erst die Frage gelesen.
Wenn ich Dich richtig verstanden habe, kann ich Dir evtl. Deine Frage 1 und 2 beantworten.
Dazu habe ich Dir nachfolgend mal ein kleines Makro geschrieben,
was Leerzeichen automatisch in die Iban einfügt,
Länderabhängig (musst Du noch ergänzen),
fehlertolerante Eingabe des Benutzers.
Einfaches Textfeld, kein maskiertes Feld(damit hab ich immer Probleme...).
Code: Alles auswählen
Sub Ibanleerzeichen
' Library laden für 'ReplaceString'
If Not GlobalScope.BasicLibraries.isLibraryLoaded("Tools") Then GlobalScope.BasicLibraries.LoadLibrary("Tools")
' Iban-Eingabe durch Dein Textfeld.
'Iban = "DEpp bbbb bbbb kkkk kkkk kk" ' (Aus Wikipedia)
Iban = "DE12 A234 B234 C234 D234 E2" ' Test-Iban
' Leerzeichen löschen, für den Fall, daß der Benutzer diese ausversehen falsch gesetzt hat:
' z.B. "D E12 A2 34B24 C234 D2 34E2" wird trotzdem korrekt umgesetzt
Iban = ReplaceString(Iban,""," ")
' Falls der Benutzer die LKZ kleingeschrieben hat, diese in Großbuchstaben umwandeln.
Iban = ReplaceString(Iban, UCase(Left(Iban,2)), Left(Iban,2))
' Länderauswahl
Select Case Left(Iban, 2)
Case "DE"
' Wenn Länge nicht stimmt, ist Iban falsch.
If Len(Iban) <> 22 Then Msgbox "Iban stimmt nicht, falsche Länge" : Exit Sub
' Hier Leerzeichen einfügen.
' 1.Zahl in Mid ist die Iban-Stelle, 2. Zahl ist Anzahl der Zeichen.
Iban = Left(Iban, 4) + " " + Mid(Iban,5, 4) + " " + Mid(Iban,9, 4) + " " + Mid(Iban,13, 4) + " " + Mid(Iban,17, 4)+ " " + Right(Iban, 2)
Case "AU"
If Len(Iban) <> 20 Then Msgbox "Iban stimmt nicht, falsche Länge" : Exit Sub
' Hier Zeile für Österreich eingeben.
Case "CH"
If Len(Iban) <> 21 Then Msgbox "Iban stimmt nicht, falsche Länge" : Exit Sub
' Hier Zeile für Schweiz eingeben.
Case Else:
MsgBox "Land unbekannt." : Exit Sub
End Select
' Zeile mit eingefügten Leerzeichen in das Textfeld zurückschreiben. (Hier nur anzeigen)
Msgbox Iban
' Zeile ohne Leerzeichen für die Datenbank. (Hier nur anzeigen)
Iban = ReplaceString(Iban,""," ")
Msgbox Iban
End Sub
Das Makro würd ich dann mit 'Bei Fokusverlust' starten.
Du brauchst die Iban also nicht in verschieden Felder aufteilen.
War es das, wonach Du gefragt hast?
Würd mich freuen, wenn ich Dir helfen konnte.
Viele Grüße,
Hotti
Hallo Jürgen!
Ich weiß nicht, ob Du inzwischen eine Lösung gefunden hast.
Hab heute erst die Frage gelesen.
Wenn ich Dich richtig verstanden habe, kann ich Dir evtl. Deine Frage 1 und 2 beantworten.
Dazu habe ich Dir nachfolgend mal ein kleines Makro geschrieben,
was Leerzeichen automatisch in die Iban einfügt,
Länderabhängig (musst Du noch ergänzen),
fehlertolerante Eingabe des Benutzers.
Einfaches Textfeld, kein maskiertes Feld(damit hab ich immer Probleme...).[code]Sub Ibanleerzeichen
' Library laden für 'ReplaceString'
If Not GlobalScope.BasicLibraries.isLibraryLoaded("Tools") Then GlobalScope.BasicLibraries.LoadLibrary("Tools")
' Iban-Eingabe durch Dein Textfeld.
'Iban = "DEpp bbbb bbbb kkkk kkkk kk" ' (Aus Wikipedia)
Iban = "DE12 A234 B234 C234 D234 E2" ' Test-Iban
' Leerzeichen löschen, für den Fall, daß der Benutzer diese ausversehen falsch gesetzt hat:
' z.B. "D E12 A2 34B24 C234 D2 34E2" wird trotzdem korrekt umgesetzt
Iban = ReplaceString(Iban,""," ")
' Falls der Benutzer die LKZ kleingeschrieben hat, diese in Großbuchstaben umwandeln.
Iban = ReplaceString(Iban, UCase(Left(Iban,2)), Left(Iban,2))
' Länderauswahl
Select Case Left(Iban, 2)
Case "DE"
' Wenn Länge nicht stimmt, ist Iban falsch.
If Len(Iban) <> 22 Then Msgbox "Iban stimmt nicht, falsche Länge" : Exit Sub
' Hier Leerzeichen einfügen.
' 1.Zahl in Mid ist die Iban-Stelle, 2. Zahl ist Anzahl der Zeichen.
Iban = Left(Iban, 4) + " " + Mid(Iban,5, 4) + " " + Mid(Iban,9, 4) + " " + Mid(Iban,13, 4) + " " + Mid(Iban,17, 4)+ " " + Right(Iban, 2)
Case "AU"
If Len(Iban) <> 20 Then Msgbox "Iban stimmt nicht, falsche Länge" : Exit Sub
' Hier Zeile für Österreich eingeben.
Case "CH"
If Len(Iban) <> 21 Then Msgbox "Iban stimmt nicht, falsche Länge" : Exit Sub
' Hier Zeile für Schweiz eingeben.
Case Else:
MsgBox "Land unbekannt." : Exit Sub
End Select
' Zeile mit eingefügten Leerzeichen in das Textfeld zurückschreiben. (Hier nur anzeigen)
Msgbox Iban
' Zeile ohne Leerzeichen für die Datenbank. (Hier nur anzeigen)
Iban = ReplaceString(Iban,""," ")
Msgbox Iban
End Sub[/code] Das Makro würd ich dann mit 'Bei Fokusverlust' starten.
Du brauchst die Iban also nicht in verschieden Felder aufteilen.
War es das, wonach Du gefragt hast?
Würd mich freuen, wenn ich Dir helfen konnte.
Viele Grüße,
Hotti