Hallo,
ich möchte eine Zeichenfolge in eine Zahl wandeln.
z.B:
abc: 12344
ergibt dann
12344
Mein Code:
Dim Nummer as String
Dim Nummer2 as Long
.....
Nummer2 = Val(Nummer)
....
Funzt leider nicht. Warum bzw. was ist falsch?
Danke
Hallo,
ich möchte eine Zeichenfolge in eine Zahl wandeln.
z.B:
abc: 12344
ergibt dann
12344
Mein Code:
Dim Nummer as String
Dim Nummer2 as Long
.....
Nummer2 = Val(Nummer)
....
Funzt leider nicht. Warum bzw. was ist falsch?
Danke
frage vorher mit IsNumeric(...) ab, ob es sich in eine Zahl umwandeln lässt.
Gruß
Dirk
%edit
ich hätte auch sowas wie Cint, Clng, Cdbl verwendet.
Welcher Fehler kommt?
Zitat
Dim Nummer2 as Long
Funzt leider nicht. Warum bzw. was ist falsch?
Wer lesen kann, ist klar im Vorteil!
Zitat
Return value
Val returns the converted part of stringExpr as a Double.
Fehler:
Type mismatch
Der String hat immer Buchstaben und Zahlen. Quelle ist eine Picklist.
Die Variable wird aber nach dem Val-Befehl nicht belegt.
Sie wird zwar mit 0 initialisiert, aber sonst auch nix.
Nachtrag:
es liegt wohl daran, dass die Quelle eine Picklist ist. d.h. der Val-Befehl checkt wohl das Array nicht. Der Befehl Str funzt nämlich auch nicht.
wenn Du ein Feld ausliest, dann kommt immer eine Liste zurück. D.h. Du musst die Umwandlung für jeden Wert in der Liste machen.
Gruß
Dirk
Warum für jeden Wert der Liste?
mittels:
meine_Variable = picklist(0)
habe ich doch genau einen Wert. Und diesen Wert (meine_Variable) will ich in eine Zahl wandeln.
bei einem Feld welches DU ausliest, kommt immer ein Array mit 1 bis n Werten zurück.
Schalte mal den Debugger ein und schau, wenn der Fehler kommt alle Variablen und Objekte an, die in der Zeile benutzt werden.
Falls picklist der Feldname in dem Dokument ist, dann fehlt in der Zeile
meine_Variable = picklist(0)
noch irgendwie das NotesDocument-Object. In etwa so:
meine_Variable = doc.picklist(0)
Gruß
Dirk
Moinsens,
Unabhängig von Array oder nicht: "Val" liefert 0 bei führendem Text (abc: ) . Hängt der Text am Ende, wird nur die Zahl geliefert.
Bei 'ner automatischen Mailsortierung nach Subject-Inhalt hatte ich gerade das gleiche Problem.
Sieht bei mir jetzt so aus:
Private Function FindeString(Ordner As String, gefunden As Integer)
Dim Zahl As Integer
Zahl = Abs(Val (Ordner)) ' Funzt nur, wenn KEIN Text vor Num folgt
While Zahl = 0 And Len(Ordner) > 5 'sucht Zahl durch Weglassen von führendem Text
Ordner = Mid(Ordner,2)
Zahl = Abs(Val (Ordner))
Wend
.
.
.
End Function
Oder gibt's da was intelligenteres?