【问题标题】:Spell check an Excel sheet in VBA拼写检查 VBA 中的 Excel 工作表
【发布时间】:2018-02-15 02:48:33
【问题描述】:

我搜索了互联网,找到了一些可能的解决方案,但我也想在这里问一下。

目标是单击一个按钮,然后对整个工作表进行拼写检查。

这里有一些代码

Sub spellCheck()

Sheet1.Cells.CheckSpelling
End Sub

另外,我发现了这个:

Sub SpellCheck()
Dim Checkword As String, Result As Boolean
Checkword = Selection.Value
Result = Application.CheckSpelling(Checkword)
Selection.Offset(0, 1) = Result
End Sub

有什么想法吗?两者都不为我工作。谢谢!

【问题讨论】:

  • 对整个工作簿进行拼写检查。 Option Explicit Sub Check_Workbook() Dim wks as Worksheet 对于 Worksheets 中的每个 wks 调用 spellCheck(wks) Next End Sub sub spellCheck(whichSheet as Worksheet) whichSheet.Cells.CheckSpelling End Sub
  • 我在 C# 中有它,以防你想尝试。 stackoverflow.com/questions/12120082/…

标签: vba excel


【解决方案1】:

您可以通过以下方式检查整个工作簿:

Sub SpellCheck()

For Each sh In Worksheets
    Sheets(sh.Name).Cells.CheckSpelling
Next

End Sub

这将循环浏览整本书中的每张纸,并对每张纸进行拼写检查。我还想不通的是如何使拼写检查器实际移动到拼写错误的位置。因此,通过上述内容,您只会得到一个拼写错误列表,而没有用于评估它们的上下文。

【讨论】:

    【解决方案2】:

    我注意到我的代码中有一个错字。

    以下作品:

    Sub spellCheck()
    
    Sheet1.Cells.CheckSpelling
    
    End Sub
    

    但是,如果有人知道如何完成整个工作簿,我会对此感兴趣。谢谢。

    【讨论】:

    • 看起来您已经获得了整个工作簿的上述代码,您可以在其中放置 For Each 和 Sheets(sh.Name) 而不是 Sheet1。
    【解决方案3】:

    此代码适用于选定的单元格。如果单元格中有任何拼写错误,它将突出显示

    Dim Myrange As Range
    Selection.SpecialCells(xlVisible).Select
    For Each Myrange In Selection
        If Application.CheckSpelling(word:=Myrange.Value) = False Then
        Myrange.Font.Color = vbRed
        End If
    Next
    

    【讨论】:

      【解决方案4】:

      好的,因此您可以使用以下命令调用工具栏的拼写检查器,只要您当时启用了屏幕更新,它就会将您移动到拼写错误的位置。

      Application.CommandBars("Tools").Controls("Spelling...").Execute
      

      您可以使用嵌入在上述循环中的此命令来遍历工作簿中的工作表并在每个新工作表上调用此命令。

      上限

      【讨论】:

        【解决方案5】:

        这使用来自先前答案的代码 sn-p 将用于拼写检查的区域限制为特定区域。我需要在一个小项目中做的事情。这提供了拼写检查器的完整功能,并在上下文中显示错误。 rowNumber 在别处计算。选择范围可以在代码中的别处完全控制,以满足您的特殊需要。认为这可能有助于其他人搜索此帖子。

         With Sheets("Sheet1")
            slic = CStr(rowNumber)
            .Range("AL3:AN" & slic).Select   
            Application.CommandBars("Tools").Controls("Spelling...").Execute
        End With
        

        感谢以前的海报,这解决了我的一个问题。非常感谢。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2016-12-22
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2013-03-27
          • 1970-01-01
          • 2011-08-17
          • 1970-01-01
          相关资源
          最近更新 更多