vba - 忽略拼写检查中的文本框
问题描述
我正在尝试创建一个仅对特定单元格进行拼写检查的宏。我已经成功地对单元格进行了拼写检查,但由于某种原因,拼写检查向导会在之后继续运行并尝试检查电子表格上的任何文本框。
下面是代码:
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”中指定的实际范围之前对文本框进行拼写检查。
解决方案
在没有对话框的情况下以编程方式检查单个单元格的拼写
如果您想以编程方式检查单个单元格的拼写,并且不希望显示拼写对话框,则可以使用适用于对象的方法。CheckSpelling
Application
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
推荐阅读
- c# - 用于将属性设置为一组固定值之一的 API
- c# - NLog 配置重新加载事件未触发
- php - 为什么 php socket_read 函数返回“$p86i9”45C @”?
- sql - 在 BigQuery 选择语句中动态包含所有可用的自定义维度
- python - Pyspark - 使用地图功能填充字典
- python - 在python中为字典的字典编写一个函数
- consul - 向 consul 注册多个节点
- python - 使用 .get 从字典中检索值的问题
- java - 为什么 JBoss7.1.0EAP 在部署 2 个 ear 文件时给出 java.lang.OutOfMemoryError: Metaspace Error
- azure - 发送遥测时 CorrelationId 和 MessageId 的实际用途是什么?