Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1364to1368
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Zeichenkette mit VBA prüfen

Zeichenkette mit VBA prüfen
06.06.2014 14:29:01
Erhard
Hallo,
Zeichenketten, die aus den Ziffern 0,1,2,3,4 besteht und deren Länge gegeben ist, sollen geprüft werden, ob nach jeder Ziffer(außer 0), eine Anzahl von Nullen folgt, deren Größe mit 1 kleiner ist. Beispiel: 1300201400020300 ist WAHR. Hier ist Len(Z)=16(ist vorgegeben) Vielleicht geht das auch mit Array?!
Kann jemand helfen? Danke im Voraus
Alifa

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
Anzahl Folge0en+1=Wert vorstehender Ziffer, ...
06.06.2014 17:50:56
Luc:-?
Erhard?
Gruß & FroPf, Luc :-?
Besser informiert mit …

AW: Zeichenkette mit VBA prüfen
07.06.2014 11:15:28
Tino
Hallo,
hier ein Beispiel.
Option Explicit

Sub test()
    MsgBox CheckString("1300201400020300")
End Sub

Function CheckString(strString$) As Boolean
Dim Regex As Object, objMatch As Object

Set Regex = CreateObject("Vbscript.Regexp")
CheckString = True
With Regex
  .MultiLine = False
  .Pattern = "[1-4]{1,1}0*"
  .Global = True
  For Each objMatch In .Execute(strString)
     If Len(objMatch) <> (Left(objMatch, 1) * 1) Then CheckString = False: Exit For
  Next objMatch
End With
Set Regex = Nothing
End Function
Gruß Tino

Anzeige
AW: Zeichenkette mit VBA prüfen
07.06.2014 17:26:45
ChristianM
Hallo Tino,
elegante Lösung!
Ich bin aber eben noch über einen Punkt gestolpert. Bei einen String wie zB. "2300201400024300" liefert dein Code "FALSCH". Daher würde ich das folgende Pattern nehmen: "[1-4]{1}0+"
In dem Fall wird allerdings bei einem String ohne Nullen "WAHR" zurückgegeben.
Soll Erhard entscheiden, was er braucht.
Grüße
Christian

AW: Zeichenkette mit VBA prüfen
07.06.2014 20:22:13
Erhard
Hallo,
die Function gibt bei 1140001111, WAHR. Nach der 1 darf keine 1 folgen. Das hatte ich anscheinend nicht klar erwähnt. 1300400050000 ist Wahr. Am Ende stehen stets die entsprechende Anzahl von Nullen, außer bei der 1. Der String "13004000500001" ist auch WAHR.
Gruß, Erhard

Anzeige
das hast Du gar nicht erwähnt ...
08.06.2014 10:41:47
Tino
Hallo,
müsste so funktionieren.
Sub test()
    MsgBox CheckString("13004000500001")
    MsgBox CheckString("1140001111")
    MsgBox CheckString("1300201400020300")
End Sub

Function CheckString(strString$) As Boolean
Dim Regex As Object, objMatch As Object
If InStr(strString, "11") = 0 Then
    Set Regex = CreateObject("Vbscript.Regexp")
    CheckString = True
    With Regex
      .MultiLine = False
      .Pattern = "[1-4]{1,1}0*"
      .Global = True
      For Each objMatch In .Execute(strString)
         If Len(objMatch) <> (Left(objMatch, 1) * 1) Then CheckString = False: Exit For
      Next objMatch
    End With
    Set Regex = Nothing
End If
End Function
Gruß Tino

Anzeige
AW: das hast Du gar nicht erwähnt ...
08.06.2014 14:00:55
Alifa
Hallo,
vielen Dank! Die Funktion passt perfekt. Falls Du möchtest, kannst das mit Kommentar ergänzen, damit ich das verstehen kann.
Viele Grüße,
Erhard

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige