Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Text in Zahl in Array, Fehlermeldung

Text in Zahl in Array, Fehlermeldung
06.06.2009 00:11:16
Florian
Hi Forum!
Habe hier ein kleines Problem mit Array.
In einem Array will ich einen (wie eine Zahl aussehenden) String in eine Zahl umwandeln um die Werte mit anderen Listen zu vergleichen. Für gewöhnlich, also in Worksheets, geht das ja mit "Text + 0".
So siehts jetzt aus (keine Fehlermeldung, aber Zahl = Text)
For iSystemData = 2 To LastRowSystemData
SystemData_Arr(iSystemData, 1) = Right(SystemData_Arr(iSystemData, 4), 5)
Next iSystemData
ABER:
"For iSystemData = 2 To LastRowSystemData
SystemData_Arr(iSystemData, 1) = Right(SystemData_Arr(iSystemData, 4), 5)+0
Next iSystemData"
funktioniert nicht (Fehlermeldung)
Kann mir da jemand weiterhelfen?
Besten Dank schon mal!
Gute Nacht!
Florian

15
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
Dafür gibt's in VBA eine ganze Palette von...
06.06.2009 02:08:36
Luc:-?
...Convert-Fktt, Florian,
z.B. CDbl(...), CSgl(...), CLng(...), CDbl(...), CInt(...), CBool(...) usf...
Allerdings sollte deine Methode oft auch fkt, obwohl das zu einem TypeMismatch-Fehler führt, der mitunter nicht von der vbTypanpassungsautomatik abgefangen wird. Insbesondere, wenn die Zielvariable nur As Variant deklariert ist. Allerdings wäre es ohnehin besser, zuvor mit vbFkt IsNumeric(...) (liefert Booleschen Wert!) zu prüfen, ob der resultierende Text als Zahl interpretiert wdn kann.
Gutnacht + sWE, Luc :-?
Anzeige
AW: Text in Zahl in Array, Fehlermeldung
06.06.2009 08:44:22
Nepumuk
Hallo Florian,
wenn das ein Variantarray ist, dann geht das nicht. Ein Eintrag in einem Variantarray der einmal als String initialisiert ist, lässt sich nicht mehr in einen numerischen Wert umwandeln. Das würde die Struktur des Arrays in Speicher zerstören.
Gruß
Nepumuk
AW: Text in Zahl in Array, Fehlermeldung
06.06.2009 09:35:57
Tino
Hallo,
so richtig glaube ich dies nicht.
Beispiel erst ein String und danach ein Wert vom Typ Double

Sub test()
Dim myAr(1) As Variant
myAr(0) = "1"
myAr(1) = "2"
Debug.Print TypeName(myAr(0))
Debug.Print TypeName(myAr(1))
myAr(0) = myAr(0) * 1
myAr(1) = myAr(1) * 1
Debug.Print TypeName(myAr(0))
Debug.Print TypeName(myAr(1))
End Sub


Gruß Tino

Anzeige
AW: Text in Zahl in Array, Fehlermeldung
06.06.2009 10:08:13
Beverly
Hi Tino,
da gebe ich dir vollkommen Recht. Ich hatte es so getestet:
Klauseltexte
 AB
1123A123
2222B222
3333C333
4444D4444

Tabellendarstellung in Foren Version 1.6



Sub ArrayVergleichen()
Dim arrWerte1(0 To 3)
Dim arrWerte2(0 To 3)
Dim inZaehler As Integer
For inZaehler = 0 To 3
arrWerte1(inZaehler) = Cells(inZaehler + 1, 1)
arrWerte2(inZaehler) = Cells(inZaehler + 1, 2)
Next inZaehler
For inZaehler = 0 To 3
arrWerte1(inZaehler) = Val(arrWerte1(inZaehler))
Next inZaehler
For inZaehler = 0 To 3
If arrWerte1(inZaehler) = arrWerte2(inZaehler) Then MsgBox "gleich"
Next inZaehler
End Sub


Die MsgBox wurde jeweils für die ersten 3 Fälle aufgerufen.



Anzeige
AW: Text in Zahl in Array, Fehlermeldung
06.06.2009 10:48:42
Nepumuk
Hallo,
Bitte mal testen:
Public Sub test()
    Dim vntArray As Variant
    vntArray = Split("01.01.2008:1.234", ":")
    MsgBox TypeName(vntArray(0))
    vntArray(0) = CDate(vntArray(0))
    MsgBox TypeName(vntArray(0))
    MsgBox TypeName(vntArray(1))
    vntArray(1) = CDbl(vntArray(1))
    MsgBox TypeName(vntArray(1))
End Sub

Ist aber nur so, wenn das Array mit der Split-Funktion erstellt wurde. Das habe ich vergessen, in meiner ersten Antwort dazu zu schreiben.
Gruß
Nepumuk
Anzeige
AW: Text in Zahl in Array, Fehlermeldung
06.06.2009 11:16:05
Tino
Hallo,
liegt wohl daran das vntArray vor der Zuweisung durch Split noch kein Array ist sondern nur ein stink normale Variable vom Typ Variant.
Andersrum wird ein Zellbereich einer solchen Variablen zugewiesen geht’s
Wahrscheinlich weil der Zellbereich wiederum bereits eine Array ist.

Sub test()
Dim vntArray As Variant
'A1 = Datum
'A2 = ist eine Zahl
vntArray = Range("A1:A2")
Debug.Print TypeName(vntArray(1, 1))
Debug.Print TypeName(vntArray(2, 1))
vntArray(1, 1) = CStr(vntArray(1, 1))
vntArray(2, 1) = CStr(vntArray(2, 1))
Debug.Print TypeName(vntArray(1, 1))
Debug.Print TypeName(vntArray(2, 1))
vntArray(1, 1) = vntArray(1, 1) * 1
vntArray(2, 1) = vntArray(2, 1) * 1
Debug.Print TypeName(vntArray(1, 1))
Debug.Print TypeName(vntArray(2, 1))
End Sub 


Gruß Tino

Anzeige
AW: Text in Zahl in Array, Fehlermeldung
06.06.2009 11:34:49
Nepumuk
Hallo Tino,
die Split-Funktion liefert auch ein Array. Wo ist also der Unterschied? Ein Range liefert ein Variant-Array, die Split-Funktion ein String-Array.
Na ja, wenn man's weiß, lassen sich eventuell daraus resultierende Fehler vermeiden.
Gruß
Nepumuk
so wird es sein. o.T.
06.06.2009 12:02:42
Tino
Ich schrieb es bereits, weil ich dachte, du...
06.06.2009 23:49:27
Luc:-?
...würdest den Unterschied kennen, Nepumuk,
aber das ist ja offensichtlich an dieser Stelle von allen Beteiligkeiten ignoriert worden...
Eine Variable vom Typ Variant die per Split mit einem Feld gefüllt wird, bleibt eine Variant-Variable, ist nun aber mit einem Feld, welchen Typs auch immer, gefüllt. Zwischen dieser und einer Feldvariablen vom Typ Variant besteht ein deutlicher Unterschied, der nicht zuletzt auch in der Schreibweise der Indexierung zum Ausdruck kommt...
variantmitfeld(0)(0) statt beliebfeldvar(0, 0).
Das bewirkt dann die diskutierte Unverträglichkeit.
Gruß Luc :-?
Anzeige
Nepomuk meint wohl einen Variant, der...
06.06.2009 10:34:29
Luc:-?
...ein Feld enthält, aber darauf gibt's keinerlei Hinweis...
Ciao Luc :-?
AW: Text in Zahl in Array, Fehlermeldung
06.06.2009 09:33:42
Beverly
Hi Florian,
hast du es schon mal mit Val( ) anstelle von Right( ) versucht?


AW: Text in Zahl in Array, Fehlermeldung
06.06.2009 10:00:03
Tino
Hallo,
wie ist SystemData_Arr Deklariert?
Welchen Wert gibt Right(SystemData_Arr(iSystemData, 4), 5) zurück?
Ist dies wirklich eine Zahl oder sind da vielleicht irgendwelche Zeichen vorhanden die eine Umwandlung in eine Zahl unmöglich machen.
Vielleicht hast Du auch mal ein Beispiel wo dies nicht funktioniert.
Gruß Tino
Anzeige
AW: Text in Zahl in Array, Fehlermeldung
06.06.2009 11:17:40
Florian
Hi nochmal!
Erstmal Danke für die Mithilfe. Hier das Bsp. Super, wenn Ihr eine Lösung wisst...
Gruss Florian
https://www.herber.de/bbs/user/62249.xls
AW: Text in Zahl in Array, Fehlermeldung
06.06.2009 11:23:03
Tino
Hallo,
Right(SystemData_Arr(iSystemData, 1), 5) ist bei Dir Leer. ;-)
Gruß Tino
Danke oT!!
06.06.2009 13:39:34
Florian
..
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige
Archiv - Verwandte Themen
Forumthread
Beiträge