PDA

Vollständige Version anzeigen : Bei Mid anstatt Zeichen=Text?


Gast
06.05.2004, 11:00
Hallo, ich habe folgenden Code:

Dim EinText, ZF1
EinText = Me!Zwischenablage
ZF1 = Mid(EinText, 5, 7)
Me!KaeferName = ZF1

Geht das auch mit Text statt Zeichen (Bei mir klappt es nicht)?

z.B.:

ZF1 = Mid(EinText, "Hallo", 7) ´zeige nach dem Wort "Hallo" die nächsten 7 Zeichen

J_Eilers
06.05.2004, 11:04
Hi,

nein das geht nicht, aber du kannst mit InStr() den Inhalt durchsuchen:

Me!KaeferName = Mid(Me!Zwischenablage, InStr(1, Me!Zwischenablage, "Hallo", vbTextcompare) + 5, 7)

Gast
06.05.2004, 11:12
Super, Danke!

Kann man auch nach dem 2ten (der Text Hallo kommt 2x vor) "Hallo" im Text suchen?

J_Eilers
06.05.2004, 11:21
Ja kann man. Aber das muss dann etwas anders aussehen. Wenn es noch öfter vorkommt, sollte man sich Gedanken über eine Schleife machen.

Dim Text As String
Dim Ende As String
If Len(Nz(Me!Zwischenablage, "")) <> 0 Then
Text = Me!Text
Ende = InStr(1, Text, "Hallo", vbTextCompare)
If Ende <> 0 Then
Ende = Instr(Ende, Text, "Hallo", vbTextCompare)
End If
End If

Me!Kaefer = Mid(Text, Ende + 5, 7)

Gast
07.05.2004, 06:15
Hallo, leider klappt der letzte Code bei mir nicht. Als Ergebnis gibt der Code die entsprechenden Zeichenfolgenden nach dem ersten "Hallo".

P. S. Text = Me!Zwischenablage

Gast
07.05.2004, 06:58
Hat keiner eine Idee :-(

J_Eilers
07.05.2004, 07:15
Dim Text As String
Dim Ende As String
If Len(Nz(Me!Zwischenablage, "")) <> 0 Then
Text = Me!Text
Ende = InStr(1, Text, "Hallo", vbTextCompare)
If Ende <> 0 Then
Ende = Instr(Ende + 5, Text, "Hallo", vbTextCompare)
End If
End If

Me!Kaefer = Mid(Text, Ende + 5, 7)

Sorry, wenn auch ich mal schlafen oder essen, geschweige denn arbeiten muss.

Gast
07.05.2004, 08:42
Wieso schlafen oder essen, heute arbeitet man bis zum umfallen :-))

Vielen Dank!!!

Gibt es zur der oben erwähnten Schleife irgendwo Infos für Anfänger?

Jetzt muss ich nach dem 5ten (der Text Hallo kommt 5x vor) "Beispiel" im Text suchen :-(

Gast
07.05.2004, 09:04
Müsste irgendwie:

Loop ??? ´ lasse nachfolgendes 5x durchlaufen



If Len(Nz(Me!Zwischenablage, "")) <> 0 Then
Text = Me!Text
Ende = InStr(1, Text, "Hallo", vbTextCompare)
If Ende <> 0 Then
Ende = Instr(Ende, Text, "Hallo", vbTextCompare)
End If
End If

Me!Kaefer = Mid(Text, Ende + 5, 7)

J_Eilers
07.05.2004, 09:13
Versuchs mal damit (ungetestet!):

Dim Text As String
Dim Ende As String
Dim Counter As Byte
If Len(Nz(Me!Zwischenablage, "")) <> 0 Then
Text = Me!Zwischenablage
Ende = InStr(1, Text, "Hallo", vbTextCompare)
Counter = 1
If Ende <> 0 Then
Do While Ende < Len(Text)
Ende = InStr(Ende + 5, Text, "Hallo", vbTextCompare)
Counter = Counter + 1
If Counter = 5 Then
Exit Do
End If
Loop
End If
End If

Me!Kaefer = Mid(Text, Ende + 5, 7)

Es gibt Do...Loop, While...Wend Und For Each...Next, For i = 0 To x...Next i
Schleife. Alles innerhalb der Schleife wird so lange gemacht, bis das Ergebnis im Schleifenstart erbracht wird oder die Schleife zwischendurch beendet wird. Beenden kann man nur Do und For Schleifen. Wenn das 5. Hallo auch das letzte Hallo ist, könnte man das Beenden auch anders gestalten.