mobuns
Goto Top

VBA Split Funktion auf eine Access Tabelle Anwenden

Hallo,

ich habe folgendes Problem,

in einer Tabelle in access 2010 steht folgendes

"xyz (50%) xy" das xyz und das xy sind nicht immer gleich lang.

wie muss meine Split funktion in VBA aussehen, dass ich nur die 50 in einer Splate stehen habe?

Vielen Dank für eure Antworten ;)

Content-ID: 220638

Url: https://administrator.de/forum/vba-split-funktion-auf-eine-access-tabelle-anwenden-220638.html

Ausgedruckt am: 10.01.2025 um 23:01 Uhr

Snowman25
Snowman25 28.10.2013 um 17:45:34 Uhr
Goto Top
Hallo @mobuns,
Probiers mit
Dim Result as String = Split(Split("xyz (50%) xy", "(")(1), "%")(0)
Ich bin mir nicht sicher, ob das direkte Ansprechen der Array-Elemento so funktioniert. Probier's aus face-smile

Gruß,
@Snowman25
colinardo
colinardo 28.10.2013 um 18:19:14 Uhr
Goto Top
Hallo JokerM,
und wenn du gleich alle Datensätze deiner Tabelle updaten willst, kannst du folgenden Code verwenden:
(Namen der Tabelle in Zeile 2, und den Spaltennamen in der jetzt deine Werte stehen in Zeile 3 angeben)
Sub UpdateFields()
    Const TABELLE = "Tabelle1"  
    Const SPALTE = "Prozent"  
    Dim rs As Recordset
    Set rs = CurrentDb.OpenRecordset(TABELLE)
    
    While Not rs.EOF
        fld_split = rs.Fields(SPALTE).Value
        arrSplit = Split(fld_split, "(")  
        If UBound(arrSplit) > 0 Then
            new_value = arrSplit(1)
            new_value = Left(new_value, InStr(1, new_value, "%",vbTextCompare) - 1)  
            rs.Edit
            rs.Fields(SPALTE).Value = new_value
            rs.Update
        End If
        rs.MoveNext
    Wend
    rs.Close
End Sub

Grüße Uwe
mobuns
mobuns 28.10.2013 um 21:17:53 Uhr
Goto Top
Danke euch beiden für die Antworten.
@ Snowman der code ist leider auf einen Fehler gelaufen... da ich beide antworten gleichzeitig gesehen habe, habe ich dierekt Uwes Antwort ausprobiert.

@ Uwe die Antwort ist klasse.

Ich musste nur die Konstanten nur durch die Werte aus meiner Datenbank füllen und Fertig.

Danke schön somit setzte ich die Frage auf gelöst.