用空格VBA替换汉字

时间:2017-08-23 20:57:33

标签: excel vba excel-vba

感谢大家对我的excel VBA问题的大力支持。我差不多正在完成我正在进行的项目。我遇到问题的最后一步是用空格替换中文/日文/韩文字符。我做了很多研究并没有真正得到任何可以帮助我实现这一目标的东西。另外,我有一组重音字符,我想用它们的相关字符替换而没有重音。 Á>甲

请告知是否有任何方法可以达到此目的!

再次感谢!

Dim oCell As Range

With CreateObject("VBScript.RegExp")
    .Global = True
    .Pattern = "[\u2E80-\u2FD5\u3400-\u4DBF\u4E00-\u9FCC]"
    For Each oCell In [A1:A500]
        oCell.Value = .Replace(oCell.Value, "")
    Next
End With

我刚添加了另一个代码来替换重音字符,工作精彩且速度超快。有什么类似的东西可以替换中文字符吗?我们可以在VB中将范围声明为常量,如Const "[\u2E80-\u2FD5\u3400-\u4DBF\u4E00-\u9FCC]

Option Explicit
Const AccChars = "ŠŽšžŸÀÁÂÃÄÅÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖÙÚÛÜÝàáâãäåçèéêëìíîïðñòóôõöùúûüýÿ"
Const RegChars = "SZszYAAAAAACEEEEIIIIDNOOOOOUUUUYaaaaaaceeeeiiiidnooooouuuuyy"

Sub StripAccent()
    '-- Usage: StripAccent Sheet1.Range("A1:C20")
    Dim A As String * 1
    Dim B As String * 1
    Dim i As Integer
    Dim lngLastRow As Long
    lngLastRow = Cells(Cells.Rows.Count, "B").End(xlUp).Row

    'Set aRange = Range("A2:A" & lngLastRow)
    For i = 1 To Len(AccChars)
        A = Mid(AccChars, i, 1)
        B = Mid(RegChars, i, 1)
        C = Mid(ChineseChar, i, 1)
        D = Mid(ChineseReplace, i, 1)
        ThisWorkbook.Worksheets("Sheet2").Range("A2:A" & lngLastRow).Replace What:=A, _
        Replacement:=B, _
        LookAt:=xlPart, _
        MatchCase:=True
    Next
End Sub

0 个答案:

没有答案