我在Excel中使用CheckSpelling有点挣扎。我有一个合并的单元格,我想检查,但只有这个单元格。这就是我正在做的事情。
ActiveSheet.Unprotect strSheetPassword
Application.DisplayAlerts = False
Set ma = Range("B21").MergeArea
ma.MergeCells = False
Union(Range("B1"), ma(1, 1)).CheckSpelling
ma.MergeCells = True
Application.DisplayAlerts = True
ActiveSheet.Protect strSheetPassword
它正在检查我想要的单元格,但它也会检查文档的其余部分。在阅读其他帖子时,我得到的印象是,检查单个单元格会导致CheckSpelling检查整个文档。这就是我使用Range(“B1”)放入联盟的原因--B1包含没有任何拼写错误并且通常被锁定的标题文本,因此用户无法更改它。但是,它仍在检查表格的其余部分!我已经尝试了很多变化,但它仍然会检查表格的其余部分。
结论 我的印象是,可以调用CheckSpelling表单并让它只检查某些单元格。显然,事实并非如此。我应该能够每次都检查整张纸,而不是建立自己的表格,尽管我真的不喜欢这样。感谢您的所有反馈!
答案 0 :(得分:1)
对于单个合并单元格:
Sub spell_me()
Dim b As Boolean
b = Application.CheckSpelling(Word:=ActiveCell.Text)
MsgBox b & vbCrLf & ActiveCell.Address & vbCrLf & ActiveCell.Text
End Sub
修改#1:强>
要查找犯罪嫌疑人,您可以将文本拆分()成单个单词并检查每个单词。
答案 1 :(得分:0)
如果错误的部分突出显示就足够了,你可以使用它:
Sub SpellCheck()
Dim response As Boolean
Dim words As Variant
Dim wordCount As Long
Dim startAt As Long
words = Split(ActiveCell.Text, " ")
'set all of the text to automatic color
ActiveCell.Font.ColorIndex = xlAutomatic
For wordCount = LBound(words) To UBound(words)
response = Application.CheckSpelling(word:=words(wordCount))
If Not response Then
'find out where it is in the text and color the font red
startAt = InStr(ActiveCell.Text & " ", words(wordCount) & " ")
ActiveCell.Characters(Start:=startAt, Length:=Len(words(wordCount))).Font.Color = vbRed
End If
Next
End Sub