在用希伯来语编写的 Word 文档中突出显示用户输入的重复内容
Highlighting duplicate content from user input in a Word document written in Hebrew
我正在尝试根据用户输入以深红色(颜色无关紧要)突出显示重复内容。
我运行 Word 文档中的代码,用希伯来语编写,似乎失败了。我 运行 它带有英文文本并且有效。不幸的是,任务是让代码以希伯来语而不是英语运行。
代码出现时显示'?????? ???' in the UserInput value when user input Hebrew text during debugging.
好像不支持字符类型,如何让字符类型支持希伯来文?它是不同的 Unicode 吗?
Sub HighlightDupl()
Dim UserInput As String
Dim SentArray() As String
Dim n As Long, i As Long
Application.ScreenUpdating = False
UserInput = InputBox("הדבק משפט לבדיקת כפילויות -- Paste sentence to check for duplicates", "הַצהָרָה -- Statement")
' Check if input is empty, if yes - quit program
If UserInput Is Nothing Then Exit Sub
TargetList = Array(UserInput)
For i = 0 To UBound(TargetList)
Set range = ActiveDocument.range
With range.Find
.Text = TargetList(i)
.Format = True
.MatchCase = True
.MatchWholeWord = False
.MatchWildcards = False
.MatchSoundsLike = False
.MatchAllWordForms = False
Do While .Execute(Forward:=True) = True
range.HighlightColorIndex = wdDarkRed
Loop
End With
Next
End Sub
代码中的希伯来语也无法正确阅读,因此我将其从代码 I 运行 中删除,我现在将其留在那里作为希伯来语文本的参考。
最近尝试再次处理该程序时,代码出现了一些运行时错误,例如 类型不匹配。最近几周有更新突然让我的代码出错了吗?
之后我将 UserInput 变量更改为 Variant 类型并且取得了一些进展,但代码没有按预期运行。内容将主要是希伯来语文本,但也可能有数字。
我尝试过的其他方法是将输入语言和校对语言更改为希伯来语。该文件混合了英语和希伯来语。我应该先删除所有英语才能工作吗?
一般情况下,您可以使用 通配符 Find/Replace,其中:
Find = (<*>)
Replace = ^&
然后将突出显示颜色设置为您喜欢的任何颜色。不需要宏。
上面的 通配符 Find/Replace 将找到由 space 分隔的任何重复的单词对(希伯来语或其他),而无需指定相关词。
为了能够通过 VBA InputBox 使用 Unicode(例如希伯来语)输入,您需要做两件事:
在Windows控制面板中,选择区域>管理>本地更改系统>当前系统区域设置:并设置您要使用的本地语言。请注意,这只会直接影响不支持 Unicode 的程序。您需要重新启动 Windows 才能使此更改生效。
在 VBA 编辑器中,选择工具>选项>编辑器格式>字体和 select,比如 Courier New(或任何其他支持 Unicode 的字体)。
我正在尝试根据用户输入以深红色(颜色无关紧要)突出显示重复内容。
我运行 Word 文档中的代码,用希伯来语编写,似乎失败了。我 运行 它带有英文文本并且有效。不幸的是,任务是让代码以希伯来语而不是英语运行。
代码出现时显示'?????? ???' in the UserInput value when user input Hebrew text during debugging.
好像不支持字符类型,如何让字符类型支持希伯来文?它是不同的 Unicode 吗?
Sub HighlightDupl()
Dim UserInput As String
Dim SentArray() As String
Dim n As Long, i As Long
Application.ScreenUpdating = False
UserInput = InputBox("הדבק משפט לבדיקת כפילויות -- Paste sentence to check for duplicates", "הַצהָרָה -- Statement")
' Check if input is empty, if yes - quit program
If UserInput Is Nothing Then Exit Sub
TargetList = Array(UserInput)
For i = 0 To UBound(TargetList)
Set range = ActiveDocument.range
With range.Find
.Text = TargetList(i)
.Format = True
.MatchCase = True
.MatchWholeWord = False
.MatchWildcards = False
.MatchSoundsLike = False
.MatchAllWordForms = False
Do While .Execute(Forward:=True) = True
range.HighlightColorIndex = wdDarkRed
Loop
End With
Next
End Sub
代码中的希伯来语也无法正确阅读,因此我将其从代码 I 运行 中删除,我现在将其留在那里作为希伯来语文本的参考。
最近尝试再次处理该程序时,代码出现了一些运行时错误,例如 类型不匹配。最近几周有更新突然让我的代码出错了吗?
之后我将 UserInput 变量更改为 Variant 类型并且取得了一些进展,但代码没有按预期运行。内容将主要是希伯来语文本,但也可能有数字。
我尝试过的其他方法是将输入语言和校对语言更改为希伯来语。该文件混合了英语和希伯来语。我应该先删除所有英语才能工作吗?
一般情况下,您可以使用 通配符 Find/Replace,其中:
Find = (<*>)
Replace = ^&
然后将突出显示颜色设置为您喜欢的任何颜色。不需要宏。
上面的 通配符 Find/Replace 将找到由 space 分隔的任何重复的单词对(希伯来语或其他),而无需指定相关词。
为了能够通过 VBA InputBox 使用 Unicode(例如希伯来语)输入,您需要做两件事:
在Windows控制面板中,选择区域>管理>本地更改系统>当前系统区域设置:并设置您要使用的本地语言。请注意,这只会直接影响不支持 Unicode 的程序。您需要重新启动 Windows 才能使此更改生效。
在 VBA 编辑器中,选择工具>选项>编辑器格式>字体和 select,比如 Courier New(或任何其他支持 Unicode 的字体)。