【问题标题】:Adding a Hebrew Autocorrect entry using VBA in Excel在 Excel 中使用 VBA 添加希伯来语自动更正条目
【发布时间】:2014-04-10 21:09:52
【问题描述】:

我可以在 Excel 中使用 VBA 添加英文自动更正条目

Application.AutoCorrect.AddReplacement What:="helo", Replacement:="hello"

但是,如果替换词是希伯来语,则它不起作用(不添加任何内容)

aHebrewWord = Range("C1").Value
Application.AutoCorrect.AddReplacement What:="helo", Replacement:=aHebrewWord

我知道 VBA 确实适用于希伯来语,即使您实际上在 VBA 中看不到希伯来语(来源 declaring a unicode string in vba in excel) - 例如以下函数可以正常工作:

function getReverse(aHebrewWord)
  getReverse=StrReverse(aHebrewWord)
end function

如何使用 VBA 添加希伯来语自动更正条目?

【问题讨论】:

  • 不应该有任何东西阻止 VBA 使用一个字符串而不是另一个字符串。您确定问题出在字符串是希伯来语吗?你如何定义aHebrewWord
  • 我认为你是对的......我认为问题可能是我应该完成 ActiveSheet.Range("C1").value
  • 嗨阿维什。如果您写一个版本的评论作为答案,我希望能接受。
  • 完成了,虽然我不确定“你的问题出在其他地方”是一个好的答案。

标签: excel vba


【解决方案1】:

不应该有任何东西阻止 VBA 使用一个字符串而不是另一个字符串;您的代码应该可以工作。

问题(如果存在)可能与您获取aHebrewWord 的方式有关。

【讨论】:

    【解决方案2】:

    VBA 编辑器要求 VBA 文件以 Windows-1252 编码,这是一个 8 位代码页,不支持希伯来语。

    您可以将字符串构建为宽字符代码的串联:

    'this replace 'hello' to 'שלום'
    Application.AutoCorrect.AddReplacement What:="hello", Replacement:=ChrW(&H05E9) & ChrW(&H05DC) & ChrW(&H05D5) & ChrW(&H05DD)
    

    或者你可以转换一个 Windows-1252 字符串,它是 unicode 字符串的二进制等价物:

    Application.AutoCorrect.AddReplacement What:="hello", Replacement:=StrConv("éÜÕÝ", vbFromUnicode)
    

    使用记事本转换字符串:复制粘贴 unicode 字符串,将文件保存为 unicode(不是 utf-8)并以 ASCII(实际上是 Windows-1252)打开,然后将其复制粘贴到没有前两个字符 (ÿþ) 的 VBA 编辑器,这是 BOM 标记。

    【讨论】:

    • 感谢您辛勤工作,写出非常具体的答案。我相信这会奏效。但我认为答案正如@Avish 所说,正如我在上面的评论中所写,我只是将错误的参数传递给自动更正函数。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-08-07
    • 2021-11-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多