Formatprüfung

28/02/2009 - 14:45 von Jürg | Report spam
Hallo

Ich habe Tausende von Strings in einer Spalte, die ich daneben in einer
anderen Form darstelle. Diese Konvertierung habe ich bereits fertig in VBA in
einer Schleife erstellt. Ich möchte aber vor jedem Durchgang eine
"Formatprüfung"/"Gültigkeitsprüfung" der jeweiligen Quellzelle durchführen,
damit die Konvertierung nicht stattfindet, wenn das Format des Strings nicht
stimmt. Wie kann eine solche Formatprüfung aussehen?

Die Strings müssen diese Form aufweisen: 0123-1234567-12(-123). Die Ziffern
können von 0 bis 9 reichen. Andere Zeichen sind nicht erlaubt – abgesehen von
den Bindestrichen. Varianten pro Glied:
0123: immer eine führende Null, immer 4-stellig
1234567: mindestens 1-stellig, höchstens 7-stellig
12: mindestens 1-stellig, höchstens 2-stellig

Das letzte Glied „-123“ ist fakultativ, wenn es vorkommt gilt:
123: mindestens, 1-stellig, höchstens 3-stellig

Auch die Bindestriche sollten überprüft werden. Es können 2 oder 3 sein.

Beispiele anderer gültiger Darstellungen: 0999-9-9-999 oder 0999-999-9

mit dankbaren Grüssen
Jürg
 

Lesen sie die antworten

#1 thomas.ramel
02/03/2009 - 11:41 | Warnen spam
Grëzi Jürg

On 28 Feb., 14:45, Jürg wrote:

Ich habe Tausende von Strings in einer Spalte, die ich daneben in einer
anderen Form darstelle. Diese Konvertierung habe ich bereits fertig in VBA in
einer Schleife erstellt. Ich möchte aber vor jedem Durchgang eine
"Formatprüfung"/"Gültigkeitsprüfung" der jeweiligen Quellzelle durchführen,
damit die Konvertierung nicht stattfindet, wenn das Format des Strings nicht
stimmt. Wie kann eine solche Formatprüfung aussehen?

Die Strings müssen diese Form aufweisen: 0123-1234567-12(-123). Die Ziffern
können von 0 bis 9 reichen. Andere Zeichen sind nicht erlaubt – abgesehen von
den Bindestrichen. Varianten pro Glied:
0123: immer eine führende Null, immer 4-stellig
1234567: mindestens 1-stellig, höchstens 7-stellig
12: mindestens 1-stellig, höchstens 2-stellig

Das letzte Glied „-123“ ist fakultativ, wenn es vorkommt gilt:
123: mindestens, 1-stellig, höchstens 3-stellig

Auch die Bindestriche sollten überprüft werden. Es können 2 oder 3 sein.

Beispiele anderer gültiger Darstellungen: 0999-9-9-999 oder 0999-999-9



Teste mal deine Strings mit der folgenden Funktion, die Du wie folgt
aufrufen kannst:

MsgBox Pruef(Range("A1").Value)
MsgBox Pruef(Range("A2").Value)
MsgBox Pruef(Range("A3").Value)


Public Function Pruef(strKuerzel As String) As Boolean
Dim strSplit() As String
Dim I As Integer
strSplit = Split(strKuerzel, "-")
If UBound(strSplit) < 2 Then GoTo Ungueltig

'Ersten Block prüfen
If Left(strSplit(0), 1) <> "0" Then GoTo Ungueltig
If Len(strSplit(0)) <> 4 Then GoTo Ungueltig
On Error Resume Next
I = CInt(strSplit(0))
If Err.Number <> 0 Then GoTo Ungueltig
On Error GoTo 0

'Zweiten Block prüfen
If Len(strSplit(1)) = 0 Or Len(strSplit(1)) > 7 Then GoTo
Ungueltig
On Error Resume Next
I = CInt(strSplit(1))
If Err.Number <> 0 Then GoTo Ungueltig
On Error GoTo 0

'Dritten Block prüfen
If Len(strSplit(2)) = 0 Or Len(strSplit(2)) > 2 Then GoTo
Ungueltig
On Error Resume Next
I = CInt(strSplit(2))
If Err.Number <> 0 Then GoTo Ungueltig
On Error GoTo 0

'vierten Block prüfen
If UBound(strSplit) = 3 Then
If Len(strSplit(2)) = 0 Or Len(strSplit(2)) > 3 Then GoTo
Ungueltig
On Error Resume Next
I = CInt(strSplit(2))
If Err.Number <> 0 Then GoTo Ungueltig
On Error GoTo 0
End If

Pruef = True
Exit Function
Ungueltig:
Pruef = False
End Function

Mit freundlichen Grüssen

Thomas Ramel
- MVP für MS-Excel -

Ähnliche fragen