• Privacywetgeving
    Het is bij Helpmij.nl niet toegestaan om persoonsgegevens in een voorbeeld te plaatsen. Alle voorbeelden die persoonsgegevens bevatten zullen zonder opgaaf van reden verwijderd worden. In de vraag zal specifiek vermeld moeten worden dat het om fictieve namen gaat.

VBA-macro om celinhoud anoniem te maken?

Status
Niet open voor verdere reacties.

tomswaelen

Gebruiker
Lid geworden
8 dec 2004
Berichten
349
Ik heb al eens zitten zoeken, maar ik kom er niet uit.

Ik heb basically een macro nodig die de inhoud van een cel anoniem maakt, door alle karakters te vervangen door 'X'. De spaties moeten echter wel behouden blijven.

Het komt er op neer dat de macro elk karakter behalve de spatie moet vervangen in een selectie.

Dit zou dus bijvoorbeeld geven:

Tom Swaelen -> XXX XXXXXXX
Tom Van Swaelen -> XXX XXX XXXXXXX
@Tom Swaelen -> XXXX XXXXXXX



Hoe speel ik dit klaar?
 
Zoiets:
Code:
Sub TEKST2X()
    For Each cl In ActiveSheet.UsedRange
        Tekst = cl.Value
        If Len(Tekst) > 0 Then
            For i = 1 To Len(Tekst)
                If Mid(Tekst, i, 1) <> " " Then Mid(Tekst, i, 1) = "X"
            Next i
        End If
        cl.Value = Tekst
    Next cl
End Sub
 
Laatst bewerkt:
Of eentje die niet alle letters stuk voor stuk bij langs gaat.
Code:
Sub hsv()
Dim sv, i As Long
sv = Cells(1).CurrentRegion
With CreateObject("VBscript.Regexp")
 For i = 1 To UBound(sv)
       .Global = True
       .Pattern = "([<*?://\\>@.,$!^%-_=abcdefghijklmnopqrstuvwxyz])"
       .Execute sv(i, 1)
     sv(i, 1) = .Replace(sv(i, 1), "X")
 Next
End With
Cells(1).CurrentRegion = sv
End Sub

Misschien kan a-z ook wel waar het alfabet staat, ik heb het niet getest.
 
Laatst bewerkt:
Dankjewel!

Maar hoe doe ik dit voor de geselecteerde cellen, niet voor de CurrentRegion?
 
Wijzig Cells(1).CurrentRegion in Selection? Maar een voorbeeldbestand is natuurlijk beter. Als je verschillende lossen cellen selecteert dan gaat deze optie niet werken.
 
Code:
Sub hsv_2()
Dim cl As Range
With CreateObject("VBscript.Regexp")
 For Each cl In Selection
       .Global = True
       .Pattern = "([<*?://\\>@.,$!^%-_=a-z])"
       .Execute cl
     cl = .Replace(cl, "X")
 Next
End With
End Sub
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan