首页 > 解决方案 > 忽略拼写检查中的文本框

问题描述

我正在尝试创建一个仅对特定单元格进行拼写检查的宏。我已经成功地对单元格进行了拼写检查,但由于某种原因,拼写检查向导会在之后继续运行并尝试检查电子表格上的任何文本框。

下面是代码:

Range(“C8”).Select
Selection.CheckSpelling SpellLang:=1034

使用建议更新代码,但代码仍在对文本框进行拼写检查:

Dim ws As Worksheet
Set ws = Worksheets("Sheet1")

Const dummyCell = "Z999" 'address of an empty cell
Dim cellsToCheck As Range

Set cellsToCheck = ws.Range("C8")

Union(Range(dummyCell), cellsToCheck).CheckSpelling

我循环了一遍,它在“CellsToCheck”中指定的实际范围之前对文本框进行拼写检查。

标签: vbaexcelspell-checking

解决方案


在没有对话框的情况下以编程方式检查单个单元格的拼写

如果您想以编程方式检查单个单元格的拼写,并且不希望显示拼写对话框,则可以使用适用于对象的方法。CheckSpellingApplication

Sub checkSpelling_NoDialog()

    Dim correctlySpelled As Boolean, textToCheck As String

    textToCheck = Range("A1")
    correctlySpelled = Application.checkSpelling(textToCheck)

    If Not correctlySpelled Then
        MsgBox "Incorrect Spelling of: " & textToCheck
    Else
        MsgBox "Correct Spelling of: " & textToCheck
    End If

End Sub

使用对话框以编程方式检查单个单元格的拼写

如果您确实希望显示“拼写”对话框但只想检查一个单元格,则需要“欺骗 Excel”。Excel 旨在,如果您只选择了一个单元格,则假定您实际上想要检查整个工作表。

Sub checkSpelling_WithDialog()

    Const dummyCell = "Z999" 'address of an empty cell
    Dim cellsToCheck As Range

    Set cellsToCheck = Range("A1")

    Union(Range(dummyCell), cellsToCheck).checkSpelling

End Sub

此处此处CheckSpelling概述了有关该方法的更多信息。


推荐阅读