Dieses Forum nutzt Cookies
Dieses Forum verwendet Cookies, um deine Login-Informationen zu speichern, wenn du registriert bist, und deinen letzten Besuch, wenn du es nicht bist. Cookies sind kleine Textdokumente, die auf deinem Computer gespeichert werden. Die von diesem Forum gesetzten Cookies werden nur auf dieser Website verwendet und stellen kein Sicherheitsrisiko dar. Cookies aus diesem Forum speichern auch die spezifischen Themen, die du gelesen hast und wann du zum letzten Mal gelesen hast. Bitte bestätige, ob du diese Cookies akzeptierst oder ablehnst.

Ein Cookie wird in deinem Browser unabhängig von der Wahl gespeichert, um zu verhindern, dass dir diese Frage erneut gestellt wird. Du kannst deine Cookie-Einstellungen jederzeit über den Link in der Fußzeile ändern.

Mustervergleich in einem String vereinfachen
#1
Hallo,

stellt euch vor ihr möchtest wissen, ob die ersten 4 Ziffern eines Strings eine Zahl sind.

Dim strString

Debug.print  Left(strString, 4) Like ("[0-9][0-9][0-9][0-9]")

Der oben angegebene Codeschnipsel liefert je nach Fall wahr oder falsch.


Meine Frage : Kann man das vereinfachen?
Ich muß 4 mal den Klammernausdruck hintereinander schreiben, um das gewünsche Ergebnis zu erhalten.
Antworten Top
#2
Algor,

formelmäßig würde ich das so machen:
Code:
=ISTZAHL(--LINKS(A1;4))
Wir sehen uns!
... Detlef

Meine Beiträge können Ironie oder Sarkasmus enthalten.

Antworten Top
#3
Hi Algor,

klappt das:

Code:
Debug.Print IsNumeric(Left(strString, 4))
Herzliche Grüße aus dem Rheinland
Jörg

[Windows 10, Microsoft 365]
Antworten Top
#4
Code:
Sub M_snb()
   MsgBox Val("12345hjkk") > 999
End Sub
Zum übersetzen von Excel Formeln:

http://dolf.trieschnigg.nl/excel/index.p...gids=en+de
[-] Folgende(r) 1 Nutzer sagt Danke an snb für diesen Beitrag:
  • Algor
Antworten Top
#5
Hi,

klar klappt IsNumeric, hatte ich bei dem Beispiel gar nicht bedacht. Die Komplexität von VBA läßt grüßen. Danke.

Trotzdem Neustart. Ich möchte auf etwas anderes hinaus.

Schaut euch so etwas an:

debug.print  Left(strString, 4) Like ("[a-d][a-d][a-d][a-d]")




Über den o.g. Musterverlgeich soll festgestellt werden, ob die ersten 4 Buchstaben, klein geschrieben werden

und im Bereich von a bis d liegen. Und jetzt nochmal meine Frage, kann man hier vereinfachen?
Antworten Top
#6
meinst Du 

Left(strString, 4) Like Rept("[a-d]", 4)

statt

Left(strString, 4) Like "[a-d][a-d][a-d][a-d]"

?

Das Left kann vermutlich auch noch weg ...
[-] Folgende(r) 1 Nutzer sagt Danke an LCohen für diesen Beitrag:
  • Algor
Antworten Top
#7
Ja, genau den meinte ich.

Den Befehl kannte ich nicht.

Für alle nachfolgenden Leser aber bitte folgende kleine Korrektur zum Nachbauen:

Debug.Print Left(strString, 4) Like (Application.Rept("[a-d]", 4))

(oder WorksheetFunction.Rept)

Last but not least: Special thanks to snb. Nicht das was ich meinte, aber die Logik mal wieder Klasse! Kann man immer gebrauchen.

Antworten Top
#8
Debug.Print Left(strString, 4) Like (Application.Rept("[a-d]", 4))

heißt auf VBA nativ

Debug.Print Left(strString, 4) Like (String("[a-d]", 4))

... Flüchtigkeitsfehler.
[-] Folgende(r) 1 Nutzer sagt Danke an LCohen für diesen Beitrag:
  • Algor
Antworten Top
#9
Code:
Sub M_snb()
    MsgBox Replace(Replace(Replace(Replace(Left("abcdefgh", 4), "a", ""), "b", ""), "c", ""), "d", "") = ""
    MsgBox Replace(Replace(Replace(Replace(Left("aBcdefgh", 4), "a", ""), "b", ""), "c", ""), "d", "") = ""
End Sub

Code:
Sub M_snb()
    MsgBox Application.Rept("[a-d]", 4)
    MsgBox [Rept("[a-d]", 4)]
    MsgBox [Text("[a-d]", "@@@@")]
    MsgBox Replace(Space(4), " ", "[a-d]")
End Sub
Zum übersetzen von Excel Formeln:

http://dolf.trieschnigg.nl/excel/index.p...gids=en+de
[-] Folgende(r) 1 Nutzer sagt Danke an snb für diesen Beitrag:
  • Algor
Antworten Top
#10
Ich möchte feststellen, ob in meinem String ein Datum vorliegt.

Gegeben:
strString = "001 20.11.2018 17.21.08 Irgendwas"

Meine Lösung:
Debug.Print IsDate(Mid((Application.Substitute(Application.Substitute(strString, ".", ":", 4), ".", ":", 3)), 4, 19))

Gehts besser?
Antworten Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste