Text in Zahl wandeln aus Objekt...

  • Excel

Es gibt 13 Antworten in diesem Thema. Der letzte Beitrag () ist von J.BORGER.

    Text in Zahl wandeln aus Objekt...

    Hallo,

    habe ein Problem was ich nicht gelöst bekomme ;(

    Im Nachfolgenden vba Code suche ich nach einem Inhalt (Zahl) von Zeile zu Zeile....
    Bei einem gefunden Wert übernehme ich den Inhalt in das objDic (Objekt) das würde dann beispielsweise so aussehen 32,45;44,55;22,33
    Diesen Wert möchte ich als einem gefilterten Wert z.B. 32,45€ ; 44,55€ ; 22,33€ übertragen lassen in ein neues Tabellenblatt.
    Ich habe es geschafft das die Werte übertragen werden aber nicht als Zahl sondern als Text ankommen....
    Wo kann ich ansetzen das ich die Werte als Zahl (bzw. Währung übertragen bekomme).

    Ich hoffe das jemand eine Lösung hat...

    Visual Basic-Quellcode

    1. With Worksheets("Dez.")
    2. vIn = .Cells(4, 2).CurrentRegion
    3. For i = 1 To UBound(vIn)
    4. For j = 3 To 23
    5. If Len(vIn(i, j)) Then
    6. objDic(vIn(i, 2)) = objDic(vIn(i, 2)) & ";" & vIn(i, j)
    7. Exit For
    8. End If
    9. Next
    10. Next
    11. End With
    12. For Each it In objDic
    13. If it = sSBegriff Then
    14. With Worksheets("Filterung")
    15. .Cells(1, 1) = sSBegriff
    16. vIn = Split(Mid(objDic(it), 2), ";")
    17. .Cells(1, 2).Resize(UBound(vIn, 1) + 1) = Application.Transpose(vIn)
    18. End With
    19. Exit For
    20. End If
    21. Next
    22. End Sub


    CodeTags gesetzt ~VaporiZed
    Bilder
    • TEST.jpg

      48,98 kB, 654×299, 63 mal angesehen

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „VaporiZed“ ()

    Sorry... Lade die Datei mal hoch (geht keine Gefahr von aus)
    Als Anhang noch mal die Erklärung als Bilder was da passieren soll... Kompliziert zu erklären...
    Habe es auch soweit hinbekommen das alles gefiltert wird... aber das was gefiltert wird kommt nicht mehr als Zahl an :(
    Bilder
    • 1.jpg

      120,04 kB, 999×387, 59 mal angesehen
    • 2.jpg

      183,2 kB, 1.274×486, 57 mal angesehen
    • 3.jpg

      39,13 kB, 691×198, 56 mal angesehen
    • 4.jpg

      83,55 kB, 702×378, 60 mal angesehen
    Dateien
    • test.xls

      (252,42 kB, 56 mal heruntergeladen, zuletzt: )

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „J.BORGER“ ()

    Facebamm schrieb:

    Ging das was ich dir gegeben habe?


    Hi, was hattest du mir gegeben bzw. geschickt?

    Was ich bis heute herausgefunden habe ist das bei der Deklation der Variabel der Hund begraben ist:

    Sub Alles()
    Dim vIn As Variant
    Dim i As Long, j As Integer, sSBegriff As String
    Dim objDic As Object
    Dim TEST As Single

    Die Daten werden im Objekt ojjDic nach folgendem Schema gespeichert: ;23,79;8,3;21,34.....
    Wenn ich die Daten mit Punkt statt Komma in der Tabelle übernehme ;23.79;8.3;21.34....
    Dann Funktioniert die Filterung und die Daten werden als Zahl interpretiert..

    Hier wurde das Problem ansatzweise auch mal behandelt... aber ohne Lösung: ms-office-forum.net/forum/showthread.php?t=300706

    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „J.BORGER“ ()

    Bin dem ganzen etwas weitergekommen...
    brauche aber noch ein Tipp wie ich eine Variant die als String gespeichert ist, in eine Variante als Singel umwandele???

    Siehe Bild im Anhang...

    Das Format als String macht mir das Problem das ich die Zahlen als Text interpretiere...
    Würde ich diese in einen Singel umwandeln, hätte ich es wieder in Zahlenformat.
    Bilder
    • 123.jpg

      25,58 kB, 777×268, 57 mal angesehen

    J.BORGER schrieb:

    wie ich eine Variant die als String gespeichert ist, in eine Variante als Singel umwandele
    Für den Fall, dass das eigentich heißen soll: »wie ich eine Variable, die als String gespeichert ist, in eine Variable als Single umwandele«, dann gäbe es den Befehl CSng:

    Visual Basic-Quellcode

    1. Dim DeineSingleVariable As Single
    2. DeineSingleVariable = CSng(vln(0))

    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „VaporiZed“, mal wieder aus Grammatikgründen.

    Aufgrund spontaner Selbsteintrübung sind all meine Glaskugeln beim Hersteller. Lasst mich daher bitte nicht den Spekulatiusbackmodus wechseln.
    Deklariert ist die Variabele als: "Dim vIn As Variant"
    Der Inhalt ist als String und müßte eigentlich Singel sein.
    CSng ging nicht zu realisieren weil Typ angeblich unverträglich ist.
    Bilder
    • 321.jpg

      45,59 kB, 614×262, 55 mal angesehen

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „J.BORGER“ ()

    Klappt bei mir.
    Bilder
    • VBA.png

      2,5 kB, 190×125, 160 mal angesehen
    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „VaporiZed“, mal wieder aus Grammatikgründen.

    Aufgrund spontaner Selbsteintrübung sind all meine Glaskugeln beim Hersteller. Lasst mich daher bitte nicht den Spekulatiusbackmodus wechseln.
    Moment: vIn ist ja ein Array. Du willst ja nicht das vIn in ein Single umwandeln, sondern z.B. vIn(0) und vIn(1), also

    Visual Basic-Quellcode

    1. s = CSng(vIn(0))

    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „VaporiZed“, mal wieder aus Grammatikgründen.

    Aufgrund spontaner Selbsteintrübung sind all meine Glaskugeln beim Hersteller. Lasst mich daher bitte nicht den Spekulatiusbackmodus wechseln.
    Vollzitat des direkten Vorposts an dieser Stelle entfernt ~VaporiZed

    Stimmt Array... jetzt hat es geklappt und habe einen Inhaltswert als Single umgewandelt bekommen.
    Mein Problem ist aber weiterhin das alle Array´s als Single umgewendelt werden müssen.
    Bilder
    • 43.jpg

      111,16 kB, 1.044×722, 53 mal angesehen

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „VaporiZed“ ()

    J.BORGER schrieb:

    das alle Array´s als Single umgewendelt werden müssen
    Nein, ich denke nicht. Soweit ich verstanden habe, gibt es nur ein Array (siehe Fachbegriffe) mit vielen Strings. Und diese Array-Items müssen in Singles umgewandelt werden. Also:

    Visual Basic-Quellcode

    1. Dim s As Single 'ggf. eine bessere/sprechendere Bezeichung als s verwenden
    2. For i = 1 To UBound(vIn)
    3. s = CSng(vIn(i))
    4. 'hier, was immer Du mit dem Single-Wert auch machen willst
    5. Next

    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „VaporiZed“, mal wieder aus Grammatikgründen.

    Aufgrund spontaner Selbsteintrübung sind all meine Glaskugeln beim Hersteller. Lasst mich daher bitte nicht den Spekulatiusbackmodus wechseln.
    Hi, danke für den Ansatz und großes Lob... habe mein Problem jetzt so lösen können....
    Irgendwie hab ich es nicht allein geschafft... bin halt nur Hobby Programierer...

    Visual Basic-Quellcode

    1. For Each it In objDic
    2. If it = sSBegriff Then
    3. With Worksheets("Filterung")
    4. .Cells(1, 1) = sSBegriff
    5. vIn = Split(Mid$(objDic(it), 2), ";")
    6. For i = 0 To UBound(vIn)
    7. Zahlenwert = CSng(vIn(i))
    8. .Cells(i + 1, 2) = Application.Transpose(Zahlenwert)
    9. Next
    10. End With
    11. Exit For
    12. End If
    13. Next
    14. End Sub


    Wobei ich die Deklaration von "Dim Zahlenwert As Currency" auf Curreny geändert habe... wegen Währung.

    CodeTags korrigiert ~VaporiZed

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „VaporiZed“ ()