Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
836to840
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
836to840
836to840
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Nach bestimmter zeichenkette suchen + zeilenumbruc

Nach bestimmter zeichenkette suchen + zeilenumbruc
21.01.2007 18:27:53
Steffen
Hallo,
ich finde nicht das passende für mein Script.
Ich möchte diese Zeichenkette erkennen und diese einer Variable zur weiterverarbeitung übergeben.
;4,55;6,34;4,65;4,34; "Zeilenumbruch"
irgendwie sowas muß das werden ich bin mir der Syntax nur nicht im klarem :
if string, ;#,##;#,##;#,##;#,##; & vbCrLf then
...
end if
Ich hoffe ihr versteht was ich meine. Soweit ich das mal gesehen habe gibt es irgendein Symbol womit man unbekannte Zeichen-bzw. Zeichenfolgen behandeln kann.
Gruß
Steffen

9
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Nach bestimmter zeichenkette suchen + zeilenum
21.01.2007 18:48:51
trekkie
Hallo,
angenommen in activecell steht:
xxxx;4,55;6,34;4,65;4,34;
xxxx

dann klappt sowas bei mir:
Sub dest()
Dim re As Object
Set re = CreateObject("vbscript.regexp")
re.Global = 1
re.Pattern = ";\d+,?\d*.*?" & Chr(10)
If re.test(ActiveCell.Value) Then MsgBox "matched"
End Sub
hth trekkie
AW: Nach bestimmter zeichenkette suchen + zeilenum
21.01.2007 19:12:28
Steffen
danke
aber mit dem Beispiel komme ich nicht klar :-( ... Ich bekomme den String nicht über eine Zelle sondern lese diese über die RS232 Schnittstelle ein.
Es geht mir darum eine Schleife zu bekommen die nur dann läuft wenn der String so aussieht : ;4,55;6,34;4,65;4,34; "Zeilenumbruch" .
Der Zeilenumbruch kommt immer sicher und die Messwerte #,##;... werden aber noch in der experimentierphase varieren sprich mal mehr mal weniger sein.
Ich habe es schon mit:
If InStr(string, vbCrLf) = 82 Then
...
end if
probiert aber da muß ich immer die Anzahl der Zeichen im String wissen das ist ziemlich unflexibel :-(
Gruß
Steffen
Anzeige
AW: Nach bestimmter zeichenkette suchen + zeilenum
21.01.2007 19:31:37
Steffen
danke
aber mit dem Beispiel komme ich nicht klar :-( ... Ich bekomme den String nicht über eine Zelle sondern lese diese über die RS232 Schnittstelle ein.
Es geht mir darum eine Schleife zu bekommen die nur dann läuft wenn der String so aussieht : ;4,55;6,34;4,65;4,34; "Zeilenumbruch" .
Der Zeilenumbruch kommt immer sicher und die Messwerte #,##;... werden aber noch in der experimentierphase varieren sprich mal mehr mal weniger sein.
Ich habe es schon mit:
If InStr(string, vbCrLf) = 82 Then
...
end if
probiert aber da muß ich immer die Anzahl der Zeichen im String wissen das ist ziemlich unflexibel :-(
Gruß
Steffen
Anzeige
AW: Nach bestimmter zeichenkette suchen + zeilenum
21.01.2007 20:22:26
trekkie
Hallo Steffen,
suchst du die Zeichenkette innerhalb des Strings, oder beginnt der String sofort mit:

;#,##;#,##;#,##;#,##;Chr(10)

?
lg trekkie
AW: Nach bestimmter zeichenkette suchen + zeilenum
21.01.2007 20:42:23
trekkie
Hallo nochmal,
hab noch rumprobiert mit der Engine;-)
Hookay, egal woher dein String kommt, ich hab ihn mal hart verdrahtet,
ist das als Test okay?
Mit (\d*,?\d*) speichern wir deine 4 Zahlen in $1-$4 ab.
Suchmuster ist dies:

\d* == keine oder mehrere Zahlen
,? == ein oder kein Komma
\d* == keine oder mehrere Zahlen

somit passt das Pattern auf:

,0 ... ,000001
0,0 ... 0,000001
0 ... 100000

jeweils getrennt von ';' erkannt.
Das ist keine Meisterleistung, das geht sicher noch einfacher,
und ist auch nur mit dem Teststring getestet,
aber schau' mal ob du damit klarkommst.
hth, trekkie
--
Sub dest()
Dim re As Object, s$
Set re = CreateObject("vbscript.regexp")
re.Global = 1: re.MultiLine = 1: re.ignorecase = 0
s = "xxxx;4,55;6,34;4,65;4,34;" & Chr(13) & "xxxx"
re.Pattern = "^.*?;(\d*,?\d*);(\d*,?\d*);(\d*,?\d*);(\d*,?\d*).*$"
If re.test(s) Then Debug.Print re.Replace(s, "$1-$2-$3-$4")
End Sub

Anzeige
AW: Nach bestimmter zeichenkette suchen + zeilenum
21.01.2007 20:45:42
Steffen
Danke
mit deiner Beschreibung verstehe ich nun schon etwas mehr vom Script ich werde es morgen mal in ruhe durchtesten.
Vielen Dank für deine Hilfe
Gruß
Steffen
matsch fun :-)
21.01.2007 21:07:13
trekkie
Okay gut, dann much luck morgen;-)
Mal nochwas, mir ist grade eingefallen, ich weiss nicht ob du negative Werte
haben könntest, da kommt das '-' als Delimiter nicht so gut.
Somit dann für Negativwerte evtl. besser sowas:

Sub dest()
Dim re As Object, s$
Set re = CreateObject("vbscript.regexp")
re.Global = 1: re.MultiLine = 1: re.ignorecase = 0
s = "xx4,5;xx;4,55;6;-4,65;4,34;" & Chr(13) & "xxxx"
re.Pattern = "^.*?;(-?\d*,?\d*);(-?\d*,?\d*);(-?\d*,?\d*);(-?\d*,?\d*).*$"
If re.test(s) Then Debug.Print re.Replace(s, "$1|$2|$3|$4")
End Sub

lg trekkie
--
ps: für alle Fälle noch http://de.wikipedia.org/wiki/Regexp
Anzeige
AW: matsch fun :-)
23.01.2007 16:05:15
Steffen
negative Werte dürften eigentlich nie vorkommen es sei denn es hat meinen µController zerlegt :-)
Das Wiki ist hilfreich dat muß ich mir mal in ruhe durchlesen. Zum testen bin ich noch nicht gekommen... steht aber an oberster Stelle auf der Todo Liste.
Dank dir vielmals
Gruß
Steffen
zu
25.01.2007 17:51:03
zu
zu

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige