VB.NET Makro - Jahreszahlen bei Zensur auslassen?

  • Sonstige

Es gibt 1 Antwort in diesem Thema. Der letzte Beitrag () ist von DoSchwob.

    VB.NET Makro - Jahreszahlen bei Zensur auslassen?

    Hallo Leute, ich habe ein Makro geschrieben das Zahlenfolgen in einer Zelle zensiert, diese Zahlenfolgen sind 4 Stellig.

    Nun sind die Jahreszahlen das Problem, wenn im Feld steht



    "Herr xyz mit der Pesonalnummer 8293 hat 2009" wird es in

    "Herr xyz mit der Personalnummer **** hat **** " zensiert.

    Das ist auch der Sinn des Makros, Personalnummern in einer Tabelle zu zensieren, jedoch nicht die Jahreszahlen.

    Hier ist das Makro:

    ________________

    Private Function ziffernfolge_zensieren(ByVal xZeile As String) As String
    Dim MomentanePositionDesZeigers As Integer
    Dim AnzahlZeichenvonXZeile As Integer
    Dim AnzahlGefundeneZiffern As Integer
    Dim i As Integer ' Laufvariable
    Dim AuswertbaresZeichen As String
    Dim ZuErsetzenderString As String
    Dim ZuErsetzenderStringZeichen As String

    ziffernfolge_zensieren = ""
    xZeile = xZeile & " "
    AnzahlZeichenvonXZeile = Len(xZeile)

    For MomentanePositionDesZeigers = 1 To AnzahlZeichenvonXZeile Step 1

    AuswertbaresZeichen = Mid(xZeile, MomentanePositionDesZeigers, 1)

    If IsNumeric(AuswertbaresZeichen) Then

    ZuErsetzenderString = ZuErsetzenderString & AuswertbaresZeichen
    ZuErsetzenderStringZeichen = ZuErsetzenderStringZeichen & "*"

    Else
    If Len(ZuErsetzenderString) = 4 Then
    If Not IsNumeric(AuswertbaresZeichen) Then
    ziffernfolge_zensieren = Replace(ziffernfolge_zensieren, ZuErsetzenderString, ZuErsetzenderStringZeichen)
    ZuErsetzenderString = ""
    ZuErsetzenderStringZeichen = ""
    Else
    ZuErsetzenderString = ZuErsetzenderString & AuswertbaresZeichen
    ZuErsetzenderStringZeichen = ZuErsetzenderStringZeichen & "*"
    End If

    Else
    ZuErsetzenderString = ""
    ZuErsetzenderStringZeichen = ""
    End If


    End If

    ziffernfolge_zensieren = ziffernfolge_zensieren & AuswertbaresZeichen

    Next

    ziffernfolge_zensieren = Trim(ziffernfolge_zensieren)


    End Function

    Private Sub TestaufrufZiffernfolgeerstezen()
    Dim Uebergabestring, ergebnisstring As String
    Uebergabestring = "57 979977j 3353jkjfsdgjsdfk31.12.2009lgjklsdf3.2.99jgklsdf2011fghgh1.1.11jgkljsdfgkljsdflkgjklsdfjgklsdfjgkl3"
    ergebnisstring = ziffernfolge_zensieren(Uebergabestring)
    ergebnisstring = ergebnisstring
    End Sub

    __________

    Kann mir einer von euch sagen wo ich was einbauen muss, damit die Zahlen 1990,1991,1992 etc. bis 2020 ausgelassen werden?

    Vielen Dank für eure Antworten.
    Dein Problem ist weiteres aus dem anderen Thema von dir. Dazu hatte ich dir nen Post gemacht, einfach gehalten und ihn jetzt kurz mit deiner neuen Anforderung erweitert. Der Code müsste verständlich sein. Hier noch mal die Anleitung:

    "Setzt das in ein Modul. Danach markierst du deine Einträge, die du ersetzen willst und führst mit Alt+F8 dann das Makro Test aus. Fertig. exitRow verhindert, dass er ne komplett markierte Spalte komplett durchgeht, er bricht am Ende der Daten ab."


    Visual Basic-Quellcode

    1. Option Explicit
    2. Sub test()
    3. Dim exitRow As Long
    4. Dim myCell As Range
    5. exitRow = ActiveSheet.UsedRange.Rows.Count
    6. For Each myCell In Selection.Cells
    7. With myCell
    8. If .Value <> blubb(.Value) Then
    9. .Value = blubb(.Value)
    10. End If
    11. If exitRow = .EntireRow.Row Then Exit For
    12. End With
    13. Next
    14. End Sub
    15. Private Function blubb(ByVal strText As String) As String
    16. Dim i As Long
    17. Dim myArray As Variant
    18. If strText = "" Then Exit Function
    19. If InStr(1, Trim(strText), Space(1)) = 0 Then Exit Function
    20. myArray = Split(strText, Space(1))
    21. For i = LBound(myArray) To UBound(myArray)
    22. If Len(Len(myArray(i)) = 4 Or _
    23. Len(myArray(i)) = 5 Or _
    24. Len(myArray(i)) = 6) And IsNumeric(myArray(i)) Then
    25. If myArray(i) > 1990 And myArray(i) < 2020 Then
    26. 'ignorier Jahreszahl
    27. Else
    28. myArray(i) = String(6, "*")
    29. End If
    30. End If
    31. Next
    32. blubb = Join(myArray, Space(1))
    33. End Function