Registriert seit: 01.02.2016
Version(en): 2010
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.
Registriert seit: 12.04.2014
Version(en): Office 365
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.
Registriert seit: 26.07.2017
Version(en): 365
Hi Algor, klappt das: Code: Debug.Print IsNumeric(Left(strString, 4))
Herzliche Grüße aus dem Rheinland Jörg
[Windows 10, Microsoft 365]
Registriert seit: 29.09.2015
Version(en): 2030,5
Code: Sub M_snb() MsgBox Val("12345hjkk") > 999 End Sub
Folgende(r) 1 Nutzer sagt Danke an snb für diesen Beitrag:1 Nutzer sagt Danke an snb für diesen Beitrag 28
• Algor
Registriert seit: 01.02.2016
Version(en): 2010
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?
Registriert seit: 21.12.2017
Version(en): MS 365 Family (6 User x 5 Geräte für jeden) Insider-Beta
29.03.2018, 12:49
(Dieser Beitrag wurde zuletzt bearbeitet: 29.03.2018, 12:49 von LCohen.)
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:1 Nutzer sagt Danke an LCohen für diesen Beitrag 28
• Algor
Registriert seit: 01.02.2016
Version(en): 2010
29.03.2018, 13:34
(Dieser Beitrag wurde zuletzt bearbeitet: 29.03.2018, 13:34 von Algor.)
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.
Registriert seit: 21.12.2017
Version(en): MS 365 Family (6 User x 5 Geräte für jeden) Insider-Beta
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:1 Nutzer sagt Danke an LCohen für diesen Beitrag 28
• Algor
Registriert seit: 29.09.2015
Version(en): 2030,5
29.03.2018, 15:14
(Dieser Beitrag wurde zuletzt bearbeitet: 29.03.2018, 15:14 von snb.)
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
Folgende(r) 1 Nutzer sagt Danke an snb für diesen Beitrag:1 Nutzer sagt Danke an snb für diesen Beitrag 28
• Algor
Registriert seit: 01.02.2016
Version(en): 2010
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?
|