Vba 如何替换Excel工作表中的方框字符?

Vba 如何替换Excel工作表中的方框字符?,vba,excel,ascii,Vba,Excel,Ascii,我正在编写一个函数,它运行于工作表的所有已用单元格中,并用其他单元格替换字符(该文件来自提取,其中有一些不需要的字符) 这是: Sub replaceSpecialCharacters() Dim Cell As Range For Each Cell In ActiveSheet.UsedRange Cell.Value = Replace(Cell.Value, "Õ", "ä") Cell.Value = Replace(Cell.Valu

我正在编写一个函数,它运行于工作表的所有已用单元格中,并用其他单元格替换字符(该文件来自提取,其中有一些不需要的字符)

这是:

Sub replaceSpecialCharacters()
    Dim Cell As Range

    For Each Cell In ActiveSheet.UsedRange
        Cell.Value = Replace(Cell.Value, "Õ", "ä")
        Cell.Value = Replace(Cell.Value, "³", "ü")
        Cell.Value = Replace(Cell.Value, "÷", "ö")
        Cell.Value = Replace(Cell.Value, Chr(111), "Ä")
        Cell.Value = Replace(Cell.Value, Chr(220), "Ü")
        Cell.Value = Replace(Cell.Value, "Í", "Ö")
        Cell.Value = Replace(Cell.Value, "Ó", "à")
        Cell.Value = Replace(Cell.Value, "Ú", "é")
        Cell.Value = Replace(Cell.Value, "Þ", "è")
        Cell.Value = Replace(Cell.Value, "Ô", "â")
        Cell.Value = Replace(Cell.Value, "¶", "ô")
        Cell.Value = Replace(Cell.Value, Chr(194), "Â")
        Cell.Value = Replace(Cell.Value, Chr(200), "È")
        Cell.Value = Replace(Cell.Value, Chr(202), "Ê")
        Cell.Value = Replace(Cell.Value, "Ù", "œ")
    Next
End Sub
虽然有点慢,但效果很好。我的问题是我找不到替代Ascii“方框字符”的方法(▄, ┬, ╚ 及╩ 就我的情况而言)

我尝试使用Chr()函数将Ascii字符放入vba代码中,但Excel Ascii字符集似乎没有我要查找的字符集

在互联网上搜索Ascii字符代码时,我发现其中包含“框字符”,但它与Excel Ascii字符列表不对应(可以在“插入”选项卡->符号中找到)


有人知道在VBA代码中是否有达到这些“方框字符”的方法吗?

以下代码将把登录A1的代码转换为A2

Cells(2,1).Value = AscW(Cells(1,1).Value)
为了▄ 这将是9604年

您可以在替换中使用此代码,如下所示:

Cell.Value = Replace(Cell.Value, ChrW(9604), "Â")


编辑:来自@Tom Blodget的一些信息形成评论:

重要的是要了解VBA使用的是的UTF-16编码 Unicode字符集。AscW和ChrW处理一个UTF-16代码 单位

(Asc和Chr导致UTF-16和用户的 代码执行时的ANSI字符编码,而不是ASCII。)


您是否尝试过单元格。请替换以下内容:=“\”,这似乎是一个。为什么不正确地输入原始数据?这不是对您特定问题的回答,因此作为注释保留-
单元格。替换内容:=“Õ”,替换:=“ä”,查看:=xlPart,匹配案例:=True
将一次完成工作表上的所有替换,而不是依次查看每个单元格。编辑:刚刚意识到这就是@QHarr想要表达的意思。:)将其中一个box字符放入单元格A1,在即时窗口中执行:
?AscW(单元格(1,1))
,您将获得框字符的代码,e。G对于
代码是9562,那么您只需要使用
ChrW(9562)
就可以获得该字符作为字符串。正如Jeeped所说,我建议最好修复原因,而不是尝试纠正症状。数据来自哪里?请尝试正确导入,而不是稍后修复症状。@Onimanta必须了解VBA使用字符集的UTF-16编码
AscW
ChrW
处理一个UTF-16代码单元。(
Asc
Chr
导致在代码执行时UTF-16和用户的ANSI字符编码之间进行转码,而不是ASCII。[ASCII不是您认为的那样。])非常感谢您的回答,这非常有效。感谢@TomBlodget的精确性。