Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Textteile suchen mit VBA

4 views
Skip to first unread message

Walter Winter

unread,
Oct 14, 1999, 3:00:00 AM10/14/99
to
Hallo allerseits,

Hat jemand eine Ahnung ob im Excel-VBA
ein Befehl für das Suchen gewisser Textteile vorhanden ist

z.b. Text="1,32,3,4,5333,523"
ich möchte immer die Zahl zwischen den kommas heraussuchen

ich bin fuer jeden hinweis dankbar

walter
--
Walter Winter
Technical University Graz
Institute for Chemical Engineering


Johann Moll

unread,
Oct 14, 1999, 3:00:00 AM10/14/99
to
Hallo, Walter,

schreibe den Text in A1. Dann führe folgendes VBA-Makro aus:

Option Explicit

Dim i, k, m As Byte
Dim Orig, Text As String

Sub ZahlenAusText()
Orig = Cells(1, 1).Value
m = Len(Orig)
k = 1
Text = ""
For i = 1 To m
If Mid(Orig, i, 1) <> "," Then
Text = Text & Mid(Orig, i, 1)
Else
k = k + 1
Cells(k + 1, 1).Value = CInt(Text)
Text = ""
End If
Next i
Cells(k + 2, 1).Value = CInt(Text)
End Sub

Die Zahlen aus dem String werden ab A3 abwärts geschrieben.

Gruß

J. M.


Ulli

unread,
Oct 14, 1999, 3:00:00 AM10/14/99
to
Hallo Walter!!

nun, so ich das richtig sehe, mußt du dir das selbst basteln.
mein beispiel dafür wäre folgendes:

Sub test()
Dim intStelle%, intStelleAlt%, intLen%
Dim strTestText$

strTestText = "1,32,3,4,5333,523"

intLen = Len(strTestText)
Do
intStelle = InStr(intStelle + 1, strTestText, ",",
vbTextCompare)
If intStelle = 0 Then intStelle = intLen + 1
Debug.Print Mid(strTestText, intStelleAlt + 1, intStelle -
intStelleAlt - 1)
intStelleAlt = intStelle
Loop Until intStelle = intLen + 1

End Sub


in der debug.print zeile wird die zahl richtig rausgesucht. dort kannst
du statt das debug eine andere verarbeitung vornehmen.

bye
Ulli.

Walter Winter schrieb:

Frank Arendt-Theilen

unread,
Oct 14, 1999, 3:00:00 AM10/14/99
to
Hallo Walter,
trage folgendes XL8-Makro in ein allg. Modul und weises es einer
Symbolleistenschaltfläche zu:

Sub KommaSeparierterWertZerlegen()
Dim intI As Integer, Position As Integer
Dim strZahlen As String
strZahlen = ActiveCell.Value
intI = 1
Do While InStr(strZahlen, ",") <> 0
Position = InStr(strZahlen, ",")
Cells(intI, 1).Value = Left$(strZahlen, Position - 1)
strZahlen = Right$(strZahlen, Len(strZahlen) - Position)
intI = intI + 1
Loop
Cells(intI, 1).Value = strZahlen
End Sub

Vorhehensweise: Trage deinen Wert (Zahl und/oder Text, kommasepariert)
in eine Zelle und markiere diese Zelle. Starte das obige Makro.

MfG Frank
__________________________________________________________
Frank Arendt-Theilen, MVP für Microsoft Excel
E-Mail: Thei...@t-online.de


Am Thu, 14 Oct 1999 17:51:19 +0200, schrieb "Walter Winter"
<wi...@sbox.tu-graz.ac.at> in microsoft.public.de.excel zu "Textteile
suchen mit VBA":

Walter Winter

unread,
Oct 15, 1999, 3:00:00 AM10/15/99
to
Vielen Dank für Eure Tips

walter

Ulli

unread,
Oct 15, 1999, 3:00:00 AM10/15/99
to
Welchen hast du denn genommen? *grins*

Walter Winter schrieb:

Walter Winter

unread,
Oct 20, 1999, 3:00:00 AM10/20/99
to
In article <38071739...@berg.net>, stud...@berg.net says...

> Welchen hast du denn genommen? *grins*
>
keinen ... haben alle nicht den punkt getroffen

wie du aus einem anderen posting weisz hatte ich da problem mit der
zuweisung von großen array.
Mein gedanke war, dasz ich alle eintraege einfach als text in einen
vektor schreiben (1,23,45,23...) und sie bei der Auswertung einfach mit
einem "split" in ein array reinschiebe.
Aber leider gibt es im vba kein "split" wie z.b. in Perl.....

grusz
walter


0 new messages