VBAsearch使用正则expression式重复单个字符

所以上周我一直在学习VBA,并且编写了一个数据库清理工具。 但是我试图实现一个干净的,删除重复字符的任何迹象。 特别是XXX,TTTTT,6666等。但是在网上search和做一些研究,我找不到解决scheme。

我觉得正则expression式看起来类似于这样的:“^ [(\ w)+] $”

但是,这将只是find任何单词字符,并将其replace,所以我需要设置searchfind任何一个字符,一遍又一遍地重复。

我看到有人有“^(。)\ 1 + $”这似乎是做的伎俩,但它切断了我不想search的数据的结尾。

我感到震惊的是没有任何话题,我认为正则expression式是最简单的方法来find它,而不是做一个硬代码,例如。 遍历单元格值并检查每个字符。

感谢它一整天都在伤脑筋。

你可以尝试这样的事情。 我改变了你的正则expression式(.)\1+这样可以去除重复的字符。 不要忘了添加正则expression式工具>参考> Microsoft VBScript正则expression式5.5。

公共函数cleanRange(单元格为范围)
     Dim pattern As String:pattern =“(。)\ 1+”
     Dim subst As String:subst =“$ 1”
    昏暗的正则expression式作为新的RegExp

    昏暗的细胞作为范围
    对于细胞中的每个细胞
        用正则expression式
             .Global = True
             .pattern =模式
            如果.Test(cell.Value)那么
                 cell.Value = .Replace(cell.Value,subst)
            万一
        结束
    下一个单元格
结束function

我这样编码,这就是我需要的方式。

 For pp = 1 To Len(Sheets(1).Cells(x, "I").Value) char1 = Mid(Sheets(1).Cells(x, "I").Value, pp, 1) If pp < Len(Sheets(1).Cells(x, "I").Value) Then char2 = Mid(Sheets(1).Cells(x, "I").Value, pp + 1, 1) If char1 <> char2 Then Exit For End If Else Rows(x).EntireRow.Delete delFlag = 1 Exit For End If Next