excel检查单细胞

时间:2016-04-01 13:41:22

标签: excel vba excel-vba

我在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表单并让它只检查某些单元格。显然,事实并非如此。我应该能够每次都检查整张纸,而不是建立自己的表格,尽管我真的不喜欢这样。感谢您的所有反馈!

2 个答案:

答案 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

enter image description here

修改#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