WCM - Das österreichische Computer Magazin Forenübersicht
 

Zurück   WCM Forum > Rat & Tat > Programmierung

Programmierung Rat & Tat für Programmierer

Microsoft KARRIERECAMPUS

Antwort
 
Themen-Optionen Ansicht
Alt 04.05.2005, 13:10   #1
coolbininet
Hero
 
Registriert seit: 19.09.2001
Alter: 46
Beiträge: 859


coolbininet eine Nachricht über AIM schicken coolbininet eine Nachricht über Yahoo! schicken
Frage Frage Funktion textzahl

Hallo Leute!

Möchte eine Funktion schreiben die mir aus einem String zB.: "23+123+83+79" die Summe der einzelnen Zahlen ausgibt.

Hänge aber bereits schon hier:

Public Function textzahl(text As String)
Dim d, pos, i As Long
Do While (Len(text) > 0)
pos = InStr(text, "+")
d = Val(Left(text, pos - 1))
text = Mid(text, pos + 1)
Debug.Print (d)
Loop
End Function

Fehlermeldung von VBA:

Unzulässiger Prozeduraufruf oder ungültiges Argument (Fehler 5)

Was ist da falsch und muss besser oder anders gemacht werden?

Coolbininet
____________________________________
Wenn du eine helfende Hand brauchst, tust du gut wenn, du sie an den eigenen Armen suchst!
Website RI

Nur der Kleingeist hält Ordnung das Genie überblick das Chaos! Genie und Wahnsinn liegen dicht nebeneinander, sie können und sollen nicht getrennt werden.

|Marktorientierter Sozialist|Menschenfreund|Teamfähig|Analytiker|Logi ker|

If you want to see the Sky, fuck a Duck and learn to fly!

Mein Glück ist nicht von dieser Welt, insbesondere im Umgang mit Microsoft Produkten!

Möge die MACHT mit uns sein!
coolbininet ist offline   Mit Zitat antworten
Alt 04.05.2005, 13:28   #2
T.dot
Master
 
Registriert seit: 13.08.2003
Beiträge: 624


Standard

ich habs nicht gestetet, vermute aber mal folgendes:

pos = InStr(text, "+")
d = Val(Left(text, pos - 1))
text = Mid(text, pos + 1)


Wenn du beim letzten durchlauf bist, findest du kein "+" mehr, dh. pos wird 0, wenn du dann bei left(text,pos-1) als Startwert -1 hast (da ja pos=0), kann er das nicht verarbeiten.

Wenns das nicht ist könntest ja mal ausfindig machen, in welcher Zeile der Fehler ist.

mfg Thomas
T.dot ist offline   Mit Zitat antworten
Alt 04.05.2005, 13:58   #3
coolbininet
Hero
 
Registriert seit: 19.09.2001
Alter: 46
Beiträge: 859


coolbininet eine Nachricht über AIM schicken coolbininet eine Nachricht über Yahoo! schicken
Idee Lösung!

Habe jetzt eine

Public Function textzahl(text As String)
Dim d, da, pos, i, a, ausgabe As Long
Do
pos = InStr(text, "+")
If (pos < 1) Then
da = text
Exit Do
Else
d = Val(Left(text, pos - 1)) + d
text = Mid(text, pos + 1)
Exit Do
End If
Loop Until (Len(text) = 0)
ausgabe = d + da
Debug.Print (ausgabe)
End Function

Ist umständlich, geht's einfacher?

Grüsse Coolbininet
____________________________________
Wenn du eine helfende Hand brauchst, tust du gut wenn, du sie an den eigenen Armen suchst!
Website RI

Nur der Kleingeist hält Ordnung das Genie überblick das Chaos! Genie und Wahnsinn liegen dicht nebeneinander, sie können und sollen nicht getrennt werden.

|Marktorientierter Sozialist|Menschenfreund|Teamfähig|Analytiker|Logi ker|

If you want to see the Sky, fuck a Duck and learn to fly!

Mein Glück ist nicht von dieser Welt, insbesondere im Umgang mit Microsoft Produkten!

Möge die MACHT mit uns sein!
coolbininet ist offline   Mit Zitat antworten
Alt 04.05.2005, 14:17   #4
T.dot
Master
 
Registriert seit: 13.08.2003
Beiträge: 624


Standard

Du könntest deinen Text in ein Array splitten mit split(Stringzumsplitten,Teil) - also split("23+123+83+79","+") und machst dann ne schleife durchs Array und zählst alle Werte zusammen.

Ansonsten könnt ma deinen Code noch anders optimieren:

Do
pos = InStr(text, "+")
If (pos < 1) Then
d = d + text
text = ""
Else
d = Val(Left(text, pos - 1)) + d
text = Mid(text, pos + 1)
End If
Loop Until (Len(text) = 0)

mfg Thomas
T.dot ist offline   Mit Zitat antworten
Alt 04.05.2005, 14:53   #5
jak
Inventar
 
Registriert seit: 13.06.2001
Beiträge: 1.830


Standard

Andere Möglichkeit:
Code:
pos = InStr(text, "+")
While (pos <> Null) And (pos <> 0)
  d = Val(Left(text, pos - 1)) + d
  text = Mid(text, pos + 1)
  pos = InStr(text, "+")
Wend
Jak
____________________________________
Join the DNRC | Godwin\'s Law (thx@stona)
Documentation is like sex: If it\'s good, it\'s very, very good. If it\'s bad, it\'s better than nothing.
\"In theory, theory and practice are the same. In practice, they are not\" (Lawrence Berra)
jak ist offline   Mit Zitat antworten
Antwort


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.

Gehe zu


Alle Zeitangaben in WEZ +2. Es ist jetzt 23:56 Uhr.


Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Forum SEO by Zoints
© 2009 FSL Verlag